2015-06-03 4 views
0

Вышеупомянутый виджет Select2 (и большинство виджетов одинаковы) требует атрибута Model, но я не знаю, что делает модель в Widget, потому что даже если я помещаю любой другой объект модели, он работает.Yii2, что параметр модели делает в виджетах?

заменил модель на $ userModel, которая вообще не связана с моделью поставщика, и я попытался, и он работает.

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

Как я должен понимать Модель?

+0

«Виджет» сам по себе не нуждается в модели afaik. Что это за 'Select2'-класс? Вероятно, это связано с этим. – Blizz

ответ

0

Select2 widget - это экземпляр виджета Yii2 Input, который отображает вход для атрибута модели. Он полезен для форм, в которых вы создаете/обновляете свою модель. Так, например, если это для actionCreate(), вы должны использовать новый экземпляр модели ActiveRecord для атрибута виджета «model» и любое имя атрибута, которое вы хотите заполнить для «атрибута».

Итак, в вашем примере вы пытаетесь установить идентификатор модели с помощью некоторого ключа из списка поставщиков. Все модели соответствуют вашим настройкам виджета только потому, что у всех их есть «id».

Я считаю, что вам нужно предоставить некоторый другой атрибут, называемый здесь, например. 'VENDOR_ID. Обратите внимание, что ваш список поставщиков должен иметь идентификаторы поставщиков как ключи и, например, имена поставщиков как значения.

+0

Большое спасибо – Nerd

Смежные вопросы