0

我正在使用 Yii2,我想创建自定义活动表单字段类型。

例如创建一个文本输入表单字段是这样发生的:

$form = ActiveForm::begin();
$form->field($model, 'attribute_name')->textInput(['maxlength' => true]) 

我想用特殊的渲染和 all 制作自定义 json 输入字段类型,并像这样使用它:

$form->field($model, 'attribute_name')->JsonInput(['maxlength' => true]);

而不是这样:

$form->field($model, 'attribute_name')->widget('trntv\aceeditor\Widget','mode'=>'json);

如何扩展yii\widgets\ActiveForm以便添加自定义表单字段类型?有可能吗?

我发现的唯一相关信息是在Yii 论坛中,但使用格式不同:

$form->myCheckbox($model, 'attribute_name');

我希望用法像 yii 表单类型:

$form->field($model, 'attribute_name')->JsonInput(['maxlength' => true]);
4

1 回答 1

0

您需要创建:

  1. 带有方法的自定义ActiveField类(使用您的小部件配置JsonInput()调用)。widget()
  2. 将属性ActiveForm更改为您的自定义类的自定义类。您可以添加到您的 PHPDoc以获得更好的代码完成。fieldClassActiveField@method \my\custom\ActiveField field(\yii\base\Model $model, string $attribute, array $options = [])ActiveForm

您也可以跳过创建自己的ActiveFormfieldClass临时更改:

$form = ActiveForm::begin([
    'fieldClass' => \my\custom\ActiveField::class,
])

但是您每次都需要重复它,并且您不会在ActiveField.

于 2018-04-03T14:20:35.113 回答