0
echo Select2::widget([
    'model' => $vendorModel,
    'attribute' => 'id',
    'data' => $vendor,
    'options' => ['placeholder' => 'Select a vendor ...'],
    'pluginOptions' => [
        'allowClear' => true
    ],
]);

上記の Select2 ウィジェット (およびほとんどのウィジェットは同じ) には Model 属性が必要ですが、他のモデル オブジェクトを配置しても機能するため、モデルが Widget で何をするのかわかりません。

モデルをベンダーモデルとはまったく関係のない $userModel に置き換えて試してみたところ、うまくいきました。

echo Select2::widget([
    'model' => $userModel,
    'attribute' => 'id',
    'data' => $vendor,
    'options' => ['placeholder' => 'Select a vendor ...'],
    'pluginOptions' => [
        'allowClear' => true
    ],
]);

モデルをどのように理解すればよいですか?

4

1 に答える 1

0

Select2 ウィジェットは Yii2 入力ウィジェットのインスタンスであり、モデル属性の入力をレンダリングします。モデルを作成/更新するフォームに役立ちます。たとえば、actionCreate() の場合は、新しい ActiveRecord モデル インスタンスをウィジェットの「モデル」属性に使用し、「属性」に入力する任意の属性名を使用する必要があります。

したがって、あなたの例では、モデル ID を $vendor リストのキーで設定しようとしています。すべてのモデルに「id」があるという理由だけで、すべてのモデルがウィジェット設定に適合します。

ここで、「vendor_id」などと呼ばれる他の属性を提供する必要があると思います。$vendor リストには、ベンダー ID をキーとして、ベンダー名などを値として持つ必要があることに注意してください。

于 2015-06-03T07:16:12.903 に答える