2015-03-23 6 views
2

Я не могу перенаправить настраиваемую форму на конкретное действие.Yii2: перенаправление на конкретное действие из кнопки отправки

То, что я пытаюсь это

<?= Html::submitButton('delete-selected' ,['class' => 'btn btn-primary']) ?> 

здесь delete-selected мой настраиваемое действие в контроллере appointment.

Я также пробовал так:

public function actionDeleteForm() 
    { 
     return $this->render('delete'); 
     return $this->redirect(['delete-selected']); 
    } 

public function actionDeleteSelected() 
{ 
    Appointment::deleteAll(['doctor_name' =>4]); 
    return $this->redirect(['index']); 
} 

То, что я пытаюсь сделать, это на самом деле удалить некоторые записи, используя форму. Имя формы - delete, имеющее поле раскрывающегося списка.

Я хочу опубликовать данные в действии deleteselected и использовать переменную $ _POST в запросе удаления.

Как это сделать?

Спасибо.

ответ

6

Любая кнопка отправки, которую вы положили на форму, будет отправлена ​​на URL-адрес, указанный в параметре действия формы. Если вы не указали один, Yii будет использовать текущий контроллер/действие формы. Если вы хотите переопределить это поведение, вам нужно будет указать действие для формы. например

$form = ActiveForm::begin([ 
    'action' => 'appointment/delete-selected' 
]); 
1

в actionDeleteForm у вас есть

return $this->render('delete'); 

перед тем

return $this->redirect(['delete-selected']) 

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

1

Это несколько примечание для Joe Miller's answer. Если вы должны изменить действие формы с действием контроллера, убедитесь, что вы делаете значение «действий», как массив:

$form = ActiveForm::begin([ 
'action' => ['appointment/delete-selected'] 
]); 

Это будет относиться действие как путь к действию delete-selected в контроллере appointment.

+0

Не совсем верно. Параметр 'action' будет принимать строку или массив, см. Здесь http://www.yiiframework.com/doc-2.0/yii-widgets-activeform.html#$action-detail. Единственное преимущество передачи массива - это если вы хотите передать дополнительные параметры в действие. –