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

フィールド/フィルターなどにウィジェットを使用する場合、これらのオプションの 1 つ (または 2 つ) を提供する必要があります。次の 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 に答える