3

私の問題は次のとおりです。複数の項目を mysql データベース テーブルに挿入しようとしています。アイテムの選択には Kartik-Select2 ウィジェットを使用しています。次のコードは機能しており、複数のアイテムを選択できます。

 <?= $form->field($model, 'categories')->widget(Select2::className(), [
    'data' => $model->availableCategories(),
    'model' => $model,
    'attribute' => 'categories',
    'language' => 'en',
    'options' => ['placeholder' => 'Select a site...'],
    'pluginOptions' => [
        'allowClear' => true,
        'multiple' => true,
        ],
    ]) ?>

しかし、選択したアイテムをDBテーブルに保存する方法. 選択したアイテムはどこに保存されていますか (ウィジェット内にそれらの配列がありますか)? Modelクラスで次のように定義された私の「カテゴリ」属性:

public $categories = [];

選択したアイテムがそれに取り込まれると思いました。しかし、それは機能しません (フォーム送信後、配列は空です)。私は多くの同様のトピックを読みましたが、それがどのように機能するかについての完全で完全な説明は見つかりませんでした. 私は Yii2 を始めたばかりで、おそらく迷子になっています。助けてくれてありがとう。

4

1 に答える 1

2

通常、複数選択項目はこの方法で保存されます (これは単純化された方法です)。

  public function actionYourAction()
  {
      $post = Yii::$app->request->post();

      if (!empty($post)){

          $postModel = $post['YourModel'];
          $postModelMulti=  $postModel['your_multi_attribute'];

          if ( !empty( $postModelMulti) ){
              foreach ($postModelMulti as $key => $value) {

                  $newModel  = new YuorModelToAdd();

                  $newModel->your_attribute = $value;

                  $newModel->save();
              }
          }  
      } 
      ......
于 2016-02-28T16:53:33.843 に答える