3

我想使用Input Tags Widget制作带有标签的输入字段。但我收到了这个错误:

必须指定“名称”或“模型”和“属性”属性。

在 /var/www/html/paramoor/vendor/yiisoft/yii2/widgets/InputWidget.php 第 75 行:

/**
 * 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' => ';',
    ],
]) ?>
4

1 回答 1

0

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

给出模型和属性:

<?= $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' => ';',
    ],
]) ?>

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

于 2017-10-30T16:27:56.793 回答