我想使用Input Tags Widget创建带标记的输入字段。但我得到了这个错误:
第7行的/var/www/html/paramoor/vendor/yiisoft/yii2/widgets/InputWidget.php中的名称'或' model'和'属性'属性必须是 指定。
:
/**
* 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' => ';',
],
]) ?>
答案 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' => ';',
],
]) ?>
我建议使用第一个选项,就好像模型名称已更改一样,您不需要搜索此模型名称用作字符串的位置。