我正在使用yii2,我想创建自定义活动表单字段类型。
例如,创建文本输入表单字段正常发生:
$form = ActiveForm::begin();
$form->field($model, 'attribute_name')->textInput(['maxlength' => true])
我想用特殊渲染和所有人使用自定义的JSON输入字段类型,并以此为此:
$form->field($model, 'attribute_name')->JsonInput(['maxlength' => true]);
不喜欢这样:
$form->field($model, 'attribute_name')->widget('trntvaceeditorWidget','mode'=>'json);
如何扩展yiiwidgetsActiveForm
,以添加我的自定义表单字段类型?有可能吗?
我发现的唯一有关此信息的信息是在YII论坛中,但是使用方式不同:
$form->myCheckbox($model, 'attribute_name');
我希望用法像yii形式类型:
$form->field($model, 'attribute_name')->JsonInput(['maxlength' => true]);
您需要创建:
- 使用方法
JsonInput()
的自定义ActiveField
类(用您的小部件配置调用widget()
(。 - 自定义
ActiveForm
类具有更改的fieldClass
属性为您的自定义ActiveField
类。您可以将@method mycustomActiveField field(yiibaseModel $model, string $attribute, array $options = [])
添加到ActiveForm
的PHPDOC中以获得更好的代码完成。
您也可以跳过创建自己的ActiveForm
并更改fieldClass
AD HOC:
$form = ActiveForm::begin([
'fieldClass' => mycustomActiveField::class,
])
但是您需要每次重复它,并且您将在ActiveField
中的自定义方法完成代码。