Yii2,模型参数在小部件中的作用是什么?

Yii2, what the model parameter does in widget?

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

上面的Select2 widget(大部分widget都是一样的)需要Model属性,但是我不知道这个model在Widget中做了什么,因为即使我放了任何其他的model对象,它也能工作。

用与供应商模型完全无关的 $userModel 替换了模型,我试过了,它有效。

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

我应该如何理解模型?

Select2 小部件是 Yii2 Input 小部件的一个实例,它呈现模型属性的输入。它对于您 create/update 您的模型的表单很有用。所以例如如果它用于 actionCreate(),您应该将新的 ActiveRecord 模型实例用于 widget 'model' 属性和您想要为 'attribute' 填充的任何属性名称。

因此,在您的示例中,您尝试使用 $vendor 列表中的一些键来设置您的模型 ID。所有型号都适合您的小部件设置,因为它们都有 'id'。

我认为您需要在此处提供一些其他属性,例如'vendor_id'。请注意,您的 $vendor 列表应该将供应商 ID 作为键,例如供应商名称作为值。