【问题标题】:How to display values in listBox() for multiple selection using Yii2如何使用 Yii2 在 listBox() 中显示值以进行多选
【发布时间】:2015-12-29 03:39:19
【问题描述】:

我正在使用 Yii2 创建博客。我有具有表的基本数据库结构: 帖子 类别 Posts_Categories

我正在使用 Yii2 ActiveForm 来创建帖子创建表单。 Title(文本字段)、Content(文本区域)、Categories(多类别选择的列表框)有输入字段。

我无法使用 db 值填充 listBox。

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

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

    <?= $form->field($model, 'Content')->textarea(['rows' => 6]) ?>

    <?= $form->field($model, 'CategoryId')->listBox(\yii\helpers\ArrayHelper::map(\backend\models\Category::find()->all(),'CategoryId','CategoryName',['multiple' => true])); ?>

    <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
    </div>

    <?php ActiveForm::end(); ?>

它抛出以下错误:

Unknown Property – yii\base\UnknownPropertyException

Getting unknown property: backend\models\Category::1

列表框行有错误。其次,在列表框中填充数据后,如何处理帖子和多类别关系的数据插入。

【问题讨论】:

    标签: php mysql listbox yii2 yii2-advanced-app


    【解决方案1】:

    listBox 中有语法错误。所以,在multiple 属性之前完成结束括号)

    就像,

    <?= $form->field($model, 'CategoryId')->listBox(\yii\helpers\ArrayHelper::map(\backend\models\Category::find()->all(),'CategoryId','CategoryName'),['multiple' => true]); ?>
    

    【讨论】:

      【解决方案2】:

      关于数据插入问题的第二部分。您可能需要遍历列表框中选定(已发布)项目的数组。这是一个可能包含在控制器文件的actionCreate()actionUpdate() 函数中的示例(我假设PostController.php):

      $selectedList = $_POST['model_name']['CategoryId'];
      if(isset($selectedList)) {
          foreach($selectedList as $value){
              $pcmodel = new Post_Categories(); //assumption on model name
              //do neccessary check here
              $pcmodel->post_id = $postmodel->id;
              //assumption that value is being stored
              $pcmodel->category_id = $value; 
              $pcmodel->save(); 
          }
      }
      

      【讨论】:

      • 这并不理想,但也不适用于 $modelForm->load(Yii::$app->request->post()) 为什么 Yii 不会自动填充模型的成员来自 listBox (POSTed) 输入的数组?
      猜你喜欢
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 2015-10-05
      • 2020-04-03
      • 2012-11-15
      • 2011-05-02
      相关资源
      最近更新 更多