проверить конкретное значение кнопки отправки в контроллере (Yii2)

Как проверить значение кнопки отправки в контроллере (Yii2). Я работаю с несколькими кнопками отправки.

Я попробовал простой код PHP. Но это не работает.

if(isset($_POST['next']) && $_POST['next']=='gotocartfive') 

код в поле зрения:

<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'status')->checkbox(); ?>

</div>

<div class="form-group">
    <?php echo Html::submitButton('NEXT',array('value'=>'gotocartfive','name' => 'next','id'=>'next_summary','class'=>'btn btn-primary pull-right')); ?>
    <?php echo Html::submitButton('PREVIOUS',array('value'=>'previous_four','name' => 'cartfour','class'=>'btn btn-primary pull-left')); ?>
</div>  
<?php ActiveForm::end(); ?>
 Văn Quyết21 июл. 2016 г., 08:41
Вы можете разместить свой код формы?
 kritika55521 июл. 2016 г., 08:49
<? php $ form = ActiveForm :: begin (); ?> <? = $ form-> field ($ model, 'status') -> checkbox (); ?> </ div> <div class = "form-group"> <? php echo Html :: submitButton ('NEXT', array ('value' => 'gotocartfive', 'name' => 'next', ' id '=>' next_summary ',' class '=>' btn btn-primary pull-right ')); ?> <? php echo Html :: submitButton ('PREVIOUS', массив ('value' => 'previous_four', 'name' => 'cartfour', 'class' => 'btn btn-primary pull-left') ); ?> </ div> <? php ActiveForm :: end (); ?>
 scaisEdge21 июл. 2016 г., 08:41
покажи свой код просмотра ..

Ответы на вопрос(3)

Решение Вопроса
<?= Html::submitButton('Submit 1', ['name' => 'submit', 'value' => 'submit_1']) ?>
<?= Html::submitButton('Submit 2', ['name' => 'submit', 'value' => 'submit_2']) ?>

PHP

If (\Yii::$app->request->isPost) {
   switch (\Yii::$app->request->post('submit')) {
      case 'submit_1':

      case 'submit_2':

   }
}

Когда вы отправляете форму нажатием кнопки ввода (без нажатия кнопки отправки), submit_1 будет значением по умолчанию.

 Muhammad Omer Aslam29 мая 2019 г., 00:33
Примечание. Это работает только при обычной отправке формы, а не при использовании Pjax для отправки формы.
 kritika55522 июл. 2016 г., 04:01
Благодарю. похоже работает Но я должен нажать на кнопку два раза. Первый щелчок ничего не делает. Есть что-нибудь еще, чтобы сделать?
 Christian Lescuyer09 дек. 2017 г., 13:04
Не делайтеназвание кнопкаОтправитьв противном случае вам придется дважды нажать на кнопку, чтобы отправить форму.
 Văn Quyết22 июл. 2016 г., 04:59
Ваша проблема та жеgithub.com/yiisoft/yii2/issues/10555, Когда вы нажимаете кнопку «Отправить», если у этой кнопки есть имя атрибута, yii.activeForm.js при добавлении скрытого ввода с именем совпадает с именем кнопки. Увидетьgithub.com/yiisoft/yii2/pull/10625/files для решения

Просмотреть файл

<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'status')->checkbox(); ?>
<div class="form-group">
  <?= Html::submitButton('NEXT',[ 'name'=>'submit', 'value' => 'next', 'class' => 'btn btn-primary pull-right']) ?>
  <?= Html::submitButton('PREVIOUS',[ 'name'=>'submit', 'value' => 'previous', 'class' => 'btn btn-primary pull-right') ?>
</div>  
<?php ActiveForm::end(); ?>

Файл контроллера

public function actionYourControllerName()
{
    if(isset($_POST['submit') && $_POST['submit']=='next') 
    {
      // your code
    } 
    else if(isset($_POST['submit']) && $_POST['submit']=='previous') 
    {
       // your code
    }
}
 Faisal28 мая 2019 г., 07:49
есть ли другой способ, а не использоватьisset($_POST['submit')) >?

Код в представлении файла.

<?= Html::submitButton(Yii::t('app', '<i class="fa fa-times"></i>&nbsp;Remove'), ['class' => 'btn red', 'name' => 'submit', 'value' => '0']) ?>
<?= Html::submitButton(Yii::t('app', '<i class="fa fa-check"></i>&nbsp;Save'), ['class' => 'btn blue', 'name' => 'submit', 'value' => '1']) ?>

Код в действии контроллера

if (Yii::$app->request->post()) {

  if (Yii::$app->request->post('submit') == 0) {
     //Code for value 0
  }

  if (Yii::$app->request->post('submit') == 1) {
    //Code for value 1
  }

}

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

 Lionel Yeo29 мая 2019 г., 09:07
@Faisal попробоватьname=>"action" val=>"0" and name="action" , val=>"1"
 Lionel Yeo24 мая 2019 г., 04:44
Согласно приведенным выше комментариям, не называйте его «представить». в противном случае вам нужно будет дважды щелкнуть, потому что он использует jquery для добавления скрытой переменной
 Faisal28 мая 2019 г., 08:05
@ Mohit Это всегда работает для0 не для1
 Lionel Yeo30 мая 2019 г., 15:28
@Faisal опубликовать свой код, включая контроллер.
 Faisal28 мая 2019 г., 08:15
@LionelYeo Я назвал их обоих по отдельности, но все равно0 состояние
 Faisal29 мая 2019 г., 09:40
@LionelYeo опять та же проблема

Ваш ответ на вопрос