必须指定错误InputWidget.php第75行属性

时间:2017-10-30 02:07:43

标签: yii2 tags yii2-extension

我想使用Input Tags Widget创建带标记的输入字段。但我得到了这个错误:

  

名称'或' model'和'属性'属性必须是   指定。

第7行的/var/www/html/paramoor/vendor/yiisoft/yii2/widgets/InputWidget.php中的

/**
 * Initializes the widget.
 * If you override this method, make sure you call the parent implementation first.
 */
public function init()
{
    if ($this->name === null && !$this->hasModel()) {
        throw new InvalidConfigException("Either 'name', or 'model' and 'attribute' properties must be specified.");
    }
    if (!isset($this->options['id'])) {
        $this->options['id'] = $this->hasModel() ? Html::getInputId($this->model, $this->attribute) : $this->getId();
    }
    parent::init();
}

这是我的观看代码:

<?= $form->field($modelDetail, 'product_id')->widget(TagsinputWidget::classname(),
[
    'clientOptions' => [
        'trimValue' => true,
        'allowDuplicates' => false,
        'delimiter' => ';',
    ],
]) ?>

1 个答案:

答案 0 :(得分:0)

在字段/过滤器/等中使用小部件时,您需要提供其中一个(或两个)选项。您有两个选择:

提供模型和属性:

<?= $form->field($modelDetail, 'product_id')->widget(TagsinputWidget::classname(),
[
    'model' => $modelDetail,
    'attribute' => 'product_id',
    'clientOptions' => [
        'trimValue' => true,
        'allowDuplicates' => false,
        'delimiter' => ';',
    ],
]) ?>

只提供名称(作为组合模型和属性名称):

<?= $form->field($modelDetail, 'product_id')->widget(TagsinputWidget::classname(),
[
    'name' => 'ModelDetail[product_id]',
    'clientOptions' => [
        'trimValue' => true,
        'allowDuplicates' => false,
        'delimiter' => ';',
    ],
]) ?>

我建议使用第一个选项,就好像模型名称已更改一样,您不需要搜索此模型名称用作字符串的位置。