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 系统查询出乱码,咋解决啊
  • ¥15 绘制变量u1,u2与gg函数值的图,当u3=600时与u3=500时两个图像如何在一个三维图中表示
  • ¥20 码源版uec++编译环境问题
  • ¥15 codesys在仿真一次后无法增删变量
  • ¥20 RC522开发硬件系统刷卡异常
  • ¥15 simpack与simulink联合仿真
  • ¥15 VBA显示应用程序定义或者对象定义错误:
  • ¥15 关于#linux#的问题:minio输入密码能登录,但登录后为空白页面
  • ¥200 数据库架构方案有偿咨询
  • ¥15 matlab对包含滑台的机械臂求正逆解与轨迹规划