2015-10-14 5 views
0

У меня есть некоторый вид для каждого объекта массива ($this->receiveList), и есть 2 кнопки (2 формы с вводом submit) для всех объектов. Если я пытаюсь изменить значение статуса для кого-то из объектов (моделей) - только один (1-й) объект будет изменен (сохранено новое значение для статуса) всеми 4 кнопками. НО ТОЛЬКО 2 КНОПКИ ГОТОВЫ ДЛЯ ЭТОГО И 2 для другого объекта.
ПОЧЕМУ ЕГО СЧАСТЛИВАЮЩИЕ Ребята?
Пример IMG: http://s017.radikal.ru/i441/1510/c7/974e00e3f8be.jpg
Yii: model-> save - непредсказуемое сохранение

$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

Вам нужно name submit, чтобы содержать информацию об объекте, связанном с

 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 связанные действия и тот же идентификатор

Попробуйте назначить правильное действие для каждой формы, а также надлежащий идентификатор

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

print('<form action="action2.php" method="post" id="2">'); 
    print('<input type="submit" name="formInviteNo[sendRequest]" value="Отказаться" class="inviteAnswer">'); 
print('</form>'); 
Смежные вопросы