2016-07-26 14 views
1

なぜYii::$app->request->post()が機能しないのですか?Yii2の投稿リクエストの値が正しく機能しない

フォーム:

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

    <?= $form->field($model, 'parent') 
     ->dropDownList($model->AuthItemDropdown 
     ); 
    ?> 
    <?= $form->field($model, 'child[]') 
     ->dropDownList($model->AuthItemDropdown, 
      ['multiple'=>'multiple'] 
     ); 
    ?> 

コントローラー:

public function actionCreate(){ 

    $model = new AuthItemChild(); 

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

     $parent = Yii::$app->request->post('parent'); 
     echo $parent; // show nothing 

     $x = Yii::$app->request->post('child'); 
     print_r($x);// show nothing 
     exit; 

しかしprint_r(Yii::$app->request->post());の出力です:

あなたが呼び出す必要があり、あなたの print_r(Yii::$app->request->post());出力に基づいて
Array 
(
    [_csrf-backend] => OGd0emxoOHgJEh8ICFloPlYvJg8BEHk.VjVAMx0hTD9CKgIDNSdVOg== 
    [AuthItemChild] => Array 
     (
      [parent] => admin 
      [child] => Array 
       (
        [0] => admin 
        [1] => create-branch 
       ) 
     ) 
) 

答えて

2

$authItemChild = Yii::$app->request->post('AuthItemChild'); 
echo $authItemChild['parent']; // should show 'admin' 
+0

とどのよう名を決定私は '子ども 'を数えることができますか? –

+0

'count($ authItemChild ['child'])' – Bizley

+0

これはうまく動いていますが、yii公式ドキュメントは正しい方向から取り除きます[ここ](http://www.yiiframework.com/doc-2.0) /guide-runtime-requests.html)、実際の解決策は異なります。 –

1

あなたがポストでモデルをロードしているので、私はあなたの代わりに再びポストを取得しようと、ロードされた結果を示している必要がありますね:

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

    $parent = $model->parent; 
    echo $parent; 

    $x = $model->child; 
    print_r($x); 
    exit; 
} 
0

私は値を同じ方法で取得しようとしました。私が開示したのは です。$ app-> request-> post()(Yii2.0.10)は、テキストと選択フィールドで動作が異なります。

  1. テキストフィールドは良い方法が明示的に設定した名前で$model->parent=$request->post("parent")として値を取得することで選択するために$model->load(Yii::$app->request->post())
  2. を経由してバインドされています。デフォルトのActiveFormでは<?= $form->field($model, 'parent') ->dropDownList($model->AuthItemDropdown,['id' => 'parent','name'=>'parent'] ); ?> YouModelName[NameOfField]
関連する問題