2016-07-21 1 views
1

, um den Wert einer Übergabeschaltfläche im Controller (Yii2) zu überprüfen. Ich arbeite mit mehreren Senden-Taste.Überprüfen Sie einen bestimmten Wert für die Übergabeschaltfläche im Controller (Yii2)

Ich versuchte einfachen PHP-Code. aber es funktioniert nicht.

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

Code in Sicht ist:

<?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(); ?> 
+0

Sie Ihr Formular Code veröffentlichen können? –

+0

zeigen Sie Ihren Ansichtscode an .. – scaisEdge

+0

Feld ($ model, 'status') -> checkbox(); ?>

'gotocartfive','name' => 'next','id'=>'next_summary','class'=>'btn btn-primary pull-right')); ?> 'previous_four','name' => 'cartfour','class'=>'btn btn-primary pull-left')); ?>
kritika555

Antwort

4
<?= 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': 

    } 
} 

Wenn Sie Formular mit enter (ohne klicken Sie auf einen Submit-Button), wird submit_1 sein Standardwert.

+2

Danke. es scheint zu funktionieren. Aber ich muss zweimal auf den Knopf klicken. Der erste Klick tut nichts. Gibt es noch etwas zu tun? – kritika555

+0

Ihr Problem ist gleich zu https://github.com/yiisoft/yii2/issues/10555. Wenn Sie auf die Schaltfläche Senden klicken, wenn diese Schaltfläche über einen Attributnamen verfügt, ist yii.activeForm.js beim Hinzufügen einer ausgeblendeten Eingabe mit dem Namen identisch mit dem Namen der Schaltfläche. Siehe https://github.com/yiisoft/yii2/pull/10625/files für die Lösung –

+1

Nicht _name_ die Schaltfläche _submit_, sonst müssen Sie zweimal auf die Schaltfläche klicken, um das Formular zu senden. –

0

Try This:

View File

<?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(); ?> 

-Controller

public function actionYourControllerName() 
{ 
    if(isset($_POST['submit') && $_POST['submit']=='next') 
    { 
     // your code 
    } 
    else if(isset($_POST['submit']) && $_POST['submit']=='previous') 
    { 
     // your code 
    } 
} 
1

Datei können Sie versuchen, Code folgen.

Code in der Ansichtsdatei.

<?= 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']) ?> 

-Code in Controller-Aktion

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 
    } 

} 

Bitte lassen Sie mich wissen, wenn Sie Fragen haben.

0

Sie können auch hinzufügen, um dieses kleine js zu einem Projekt-Snippet und binden Sie es an beforeSubmit Veranstaltung in yii.activeForm.js wie folgt aus:

(function ($) { 
    var formId = !!yiiconfig.viewPolicyParams && yiiconfig.viewPolicyParams.formId && yiiconfig.viewPolicyParams.formId, 
     $form = formId && $("#" + formId); 

    /** 
    * Updates hidden field that represents clicked submit button. 
    * @param event event object triggered 
    */ 
    function updateHiddenButton (event) { 
     var $buttons = $form.find(':submit'); 

     $buttons.length && $buttons.each(function (i,b) { 
      var $hiddenButton = $('input[type="hidden"][name="' + $(b).attr('name') + '"]', $form); 
      $hiddenButton.length && $hiddenButton.remove(); 
     }); 

    }; 

    $form && $form.bind('beforeSubmit.' + formId, updateHiddenButton); 

} (jQuery)); 

Dieser Code entfernt alle versteckten Eingänge, die durch yii erstellt werden. activeForm vor dem Senden. Danach werden diese Eingaben von yii.activeForm neu erstellt.

hoffe, das hilft

Verwandte Themen