Как определить, какая кнопка отправки была нажата в форме Zend Framework? - PullRequest
2 голосов
/ 15 апреля 2011

У меня есть форма Zend Framework, которая имеет две кнопки отправки

$changes = new Zend_Form_Element_Submit('save_changes');
$changes->setLabel('Save Changes');

$delete = new Zend_Form_Element_Submit('delete');
$delete->setLabel('Delete');

, которые отображают HTML следующим образом:

<input type="submit" name="save_changes" id="user_save_changes" value="Save Changes" >
<input type="submit" name="delete" id="user_delete" value="Delete" >

В контроллере как определить, какую кнопку пользовательнажимается?

Ответы [ 5 ]

9 голосов
/ 15 апреля 2011

В вашем случае вы просто должны иметь возможность проверить

if(isset($_POST['save_changes'])
// or
if(isset($_POST['delete'])

Поскольку будет отправлено только значение нажатой кнопки.

Обычно вы даете обеим кнопкам одинаковое имя (например, действие), а затем устанавливаете значение для действия, которое вы хотите выполнить. К сожалению, это не очень хорошо работает с IE. Проверьте эту страницу для получения дополнительной информации о различных решениях для нескольких кнопки отправки.

8 голосов
/ 26 марта 2012

Поскольку вы используете Zend, я бы рекомендовал более Zend-ish подход.

Вы можете вызывать элементы напрямую по их именам, и у Zend есть метод для кнопок формы (кнопки, сброс, отправка), называемый isChecked().

, в вашем коде это будет:

if ($form->save_changes->isChecked()) {
    // Saving ...
else if ($form->delete->isChecked()) {
    // Removing ...
4 голосов
/ 24 апреля 2012

На самом деле вы можете получить это:, другое условие будет выполнено.

Пример:

if($this->getRequest()->getPost('save_changes'){
  //once you load this will become true because you didn't click this
}else{
  //once you load this page this will become true because you didn't click the save_changes submit button
}

Правдивая история.

0 голосов
/ 22 сентября 2015
$data = $this->getRequest()->getPost();
if (array_key_exists('save_changes', $data)) {
..
} else if (array_key_exists('delete', $data)) {
..
}
0 голосов
/ 17 сентября 2011
 $formData = $this->getRequest()->getPost(); 

if($formData['submit']=='save_changes'){ // echo "save chanes" ; }
if($formData['submit']=='delete'){ // echo "delete";}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...