2015-10-14 76 views
0

我对数组的每个对象都有一些视图($this->receiveList),每个对象也有2个按钮(带有输入提交的2个表单)。 如果我试图改变对象(模型)的状态值 - 只有一个(第一)对象将被所有4个按钮更改(保存状态的新值)。但只有2个按钮准备就绪,另外2个则准备另一个对象。
为什么它发生的人?
例IMG:http://s017.radikal.ru/i441/1510/c7/974e00e3f8be.jpg
Yii:模型 - >保存 - 不可预知的保存

$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>'); 
} 

回答

1

您需要名称提交按钮以包含与其相关的对象信息

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

然后你可以用这种方式实现逻辑:

$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>'); 

}

+0

非常非常感谢! – nywuctuk2

1

您打印表格whitout相关的动作和相同的ID

尽量分配给每个窗体采取适当的行动,也是一个正确的ID

​​