2015-04-23 52 views
2

我是Yii2 Framework中的新成員。我想在我的控制器/操作中獲取提交按鈕名稱/值。如何在控制器/動作中獲取提交按鈕Yii2

以下是我的代碼:

形式:

<?php $form = ActiveForm::begin(); ?> 

<?= $form->field($model, 'admin_document_key_id')->dropDownList(ArrayHelper::map(AdminDocumentKey::find()->all(), 'id', 'key_name'), ['prompt' => 'Select']) ?> 

<?= $form->field($model, 'key_value')->textInput(['maxlength' => 255]) ?>  

<div class="form-group"> 
    <?php if (Yii::$app->controller->action->id == "create"): ?> 
     <?= Html::submitButton('Create & Add New', ['class' => 'btn btn-primary']) ?> 
    <?php endif; ?> 

      <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary', 'value'=>'Create', 'name'=>'submit']) ?> 
    <?= Html::a('Cancel', ['/admindocumentvalue'], ['class' => 'btn btn-warning']) ?> 
    <?= Html::resetButton('Reset', ['class' => 'btn btn-info']) ?> 
</div> 

控制器/行動:

public function actionCreate() 
{ 
    $model = new AdminDocumentValue(); 

    if ($model->load(Yii::$app->request->post()) && $model->save()) { 
     print_r(Yii::$app->request->post()); 
     exit; 
     return $this->redirect(['index', 'id' => $model->id]); 
    } else { 
     return $this->render('create', [ 
      'model' => $model, 
     ]); 
    } 
} 

它顯示下面的輸出:

Array ([_csrf] => V0FKc09GclQDbHI1BRVEIR8xOwcjLEFiBSsyGBcZGj4dMWc6JzItbA== [AdminDocumentValue] => Array ([admin_document_key_id] => 1 [key_value] => Claims)) 

但沒有顯示提交按鈕名稱和價值。

我試過$_POST & $_REQUEST以及但它仍然不工作。

任何幫助,將不勝感激。

謝謝。

<?= Html::submitButton('Create & Add New', ['class' => 'btn btn-primary', 'value'=>'create_add', 'name'=>'submit']) ?> 
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary', 'value'=>'Create', 'name'=>'submit']) ?> 

然後在控制器

if (Yii::$app->request->post('submit')==='create_add') { 
    // create add 
} else { 
    // submit 
} 
+0

待辦事項你想要按鈕(HTML元素)的名稱和值或表單值? – arogachev

+0

@arogachev:對 – Sky

+0

第一或第二? – arogachev

回答

9

通過更改默認Yii2按鈕這樣的解決它自己。如果您想要移動到Ajax表單,您需要在按鈕執行添加值是這樣的:

<?= Html::submitButton('Create & Add New', ['class' => 'btn btn-primary', 'value'=>'Create & Add New', 'name'=>'submit']) ?> 
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary', 'value'=>'Create', 'name'=>'submit']) ?> 

然後遵循相似的邏輯,在yii.activeForm.js:

// send data to actionSave by ajax request. 
$(document).on("beforeSubmit", "#my-form-id", function() {    
    var data = $(this).data('yiiActiveForm'), 
    $button = data.submitObject, 
    extData = '&' + data.settings.ajaxParam + '=' + $(this).attr('id'); 
    if ($button && $button.length && $button.attr('name')) { 
     extData += '&' + $button.attr('name') + '=' + $button.attr('value'); 
    } 
    $.post($(this).attr('action'), $(this).serialize() + extData 
    ).done(function(result){ 
     // process  
    }); 
    return false; 
}); 
+0

你如何解決你的控制器邏輯白衣這個按鈕值? –

+0

如果您通過ajax提交表單,您需要遵循與yii.activeForm.js類似的邏輯 – friek108

1

試試這個:

if ($model->load(Yii::$app->request->post())) { 
    $data=Yii::$app->request->post('Postdata'); 
    print_r(json_encode($data)); 
    print_r($data["post_id"]); 
    $model->post_id =$data["post_id"];//$_POST["post_id"]; 
    $model->title =$data["title"];// $_POST["title"]; 
    $model->description =$data["description"];//$_POST["description"]; 
    $model->user_id =$data["user_id"];//$_POST["user_id"]; 
} 
0

馬克的回答適用於非Ajax表單

相關問題