如何在 Select2 Widget 中添加占位符 - Yii2
Posted
技术标签:
【中文标题】如何在 Select2 Widget 中添加占位符 - Yii2【英文标题】:How to add a placeholder to Select2 Widget - Yii2 【发布时间】:2018-10-25 10:35:29 【问题描述】:我正在处理一个 yii2 页面,但在向 Select2 Widget 添加占位符或提示时出现问题。这是我的代码:
<?php
use yii\helpers\html;
use kartik\widgets\ActiveForm;
use kartik\builder\Form;
use kartik\datecontrol\DateControl;
use yii\helpers\ArrayHelper;
/**
* @var yii\web\View $this
* @var app\models\FinancialAccounts $model
* @var yii\widgets\ActiveForm $form
*/
?>
<div class="financial-accounts-form">
<?php $form = ActiveForm::begin(['type' => ActiveForm::TYPE_VERTICAL]); echo Form::widget([
'model' => $model,
'form' => $form,
'columns' => 1,
'attributes' => [
'type_id' => ['type' => Form::INPUT_WIDGET, 'widgetClass'=>'\kartik\widgets\Select2', 'options' => ['data'=>ArrayHelper::map(app\models\FinancialAccountType::find()->all(), 'type_id', 'name')]],
'account_name' => ['type' => Form::INPUT_TEXT, 'options' => ['placeholder' => 'Enter Account Name...', 'maxlength' => 100]],
'account_code' => ['type' => Form::INPUT_TEXT, 'options' => ['placeholder' => 'Enter Account Code...', 'maxlength' => 10]],
'parent_id' => ['type' => Form::INPUT_WIDGET, 'widgetClass'=>'\kartik\widgets\Select2', 'options' => ['data'=>ArrayHelper::map(app\models\FinancialAccounts::find()->all(), 'account_id', 'account_name'), 'placeholder' => 'Select a Parent Account...']],
'description' => ['type' => Form::INPUT_TEXT, 'options' => ['placeholder' => 'Enter Description...', 'maxlength' => 250]],
],
]);
echo Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'),
['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']
);
ActiveForm::end(); ?>
</div>
问题出在 parent_id 属性中,因为我无法像大多数教程推荐的那样添加占位符作为选项。每次我尝试这样做时,都会收到如下错误:
Unknown Property – yii\base\UnknownPropertyException
Setting unknown property: kartik\widgets\Select2::placeholder
有谁知道我该如何解决这个问题?我的主要问题是提交数据时不能将此选项留空,但这是一种可能。它迫使我提交一个选定的项目。
【问题讨论】:
【参考方案1】:您会注意到,如果您仔细遵循documentation 中的示例,placeholder 需要包装在 options 数组中。
'parent_id' => [
'type' => Form::INPUT_WIDGET,
'widgetClass' => '\kartik\widgets\Select2',
'options' => [
'data' => ArrayHelper::map(app\models\FinancialAccounts::find()
->all(), 'account_id', 'account_name'),
'options' => ['placeholder' => '...'],
'pluginOptions' => ['allowClear' => true],
]
],
【讨论】:
哇,这太棒了。按预期工作。从来没有想过我必须将选项放在另一个选项中。非常感谢。以上是关于如何在 Select2 Widget 中添加占位符 - Yii2的主要内容,如果未能解决你的问题,请参考以下文章