duannuo4620 2015-10-14 22:00
浏览 32
已采纳

Yii:模型 - >保存 - 不可预测的保存

I have some view for every objects of array ($this->receiveList)and there are 2 buttons(2 forms with input submit) for every objects too. If i trying to change status value of someone of objects(models) - only one(1st) object will be changed(saved new value for status) by all 4 buttons. BUT ONLY 2 BUTTONS READY FOR THAT AND 2 for another object.
WHY ITS HAPPENING Guys?
Example img: http://s017.radikal.ru/i441/1510/c7/974e00e3f8be.jpg

$this->receiveList = Invite::model()->findAll( $criteria2 );    // array of 2 objects

for ( $key=0; $key <= count($this->receiveList) - 1; $key++ ) {
    // yes
    if ( isset($_POST['formInviteYes']['sendRequest']) ) {
        unset($_POST['formInviteYes']['sendRequest']);

        $this->receiveList[$key]->status = 1;
        $this->receiveList[$key]->save(false);

        $this->refresh();
    }
    // no
    if ( isset($_POST['formInviteNo']['sendRequest']) ) {
        unset($_POST['formInviteNo']['sendRequest']);

        $this->receiveList[$key]->status = 0;
        $this->receiveList[$key]->save(false);


        $this->refresh();
    }

    print('<form action="" method="post" id="">');
        print('<input type="submit" name="formInviteYes[sendRequest]" value="Согласиться"" class="inviteAnswer">');
    print('</form>');

    print('<form action="" method="post" id="">');
        print('<input type="submit" name="formInviteNo[sendRequest]" value="Отказаться" class="inviteAnswer">');
    print('</form>');
}
  • 写回答

2条回答 默认 最新

  • dongyi1015 2015-10-15 19:15
    关注

    You need to name submit buttons to contain info about object it's related to

            print('<input type="submit" name="formInviteNo[' . $invite->id . '][sendRequest]" value="Отказаться" class="inviteAnswer">');
    

    And then you could implement your logic in this way:

    $this->receiveList = Invite::model()->findAll( $criteria2 );    // array of 2 objects
    
    foreach ($this->receiveList as $invite) {
        // yes
        if ( isset($_POST['formInviteYes'][$invite->id]['sendRequest']) ) {
            unset($_POST['formInviteYes'][$invite->id]['sendRequest']);
    
            $invite->status = 1;
            $invite->save(false);
    
            $this->refresh();
        }
        // no
        if ( isset($_POST['formInviteNo'][$invite->id]['sendRequest']) ) {
            unset($_POST['formInviteNo'][$invite->id]['sendRequest']);
    
            $invite->status = 0;
            $invite->save(false);
    
            $this->refresh();
        }
    
    print('<form action="" method="post" id="">');
        print('<input type="submit" name="formInviteYes[' . $invite->id . '][sendRequest]" value="Согласиться"" class="inviteAnswer">');
    print('</form>');
    
    print('<form action="" method="post" id="">');
        print('<input type="submit" name="formInviteNo[' . $invite->id .'][sendRequest]" value="Отказаться" class="inviteAnswer">');
    print('</form>');
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵