我正在使用Yii2,我想创建自定义活动表单字段类型。
例如,creatig文本输入表单字段就像这样:
static_assert(is_same_v<decltype(char_) , TCharType>,"dont play");
我想使用特殊渲染制作自定义json输入字段类型,并使用它,如下所示:
$form = ActiveForm::begin();
$form->field($model, 'attribute_name')->textInput(['maxlength' => true])
而不是这样:
$form->field($model, 'attribute_name')->JsonInput(['maxlength' => true]);
如何扩展$form->field($model, 'attribute_name')->widget('trntv\aceeditor\Widget','mode'=>'json);
以便我可以添加自定义表单字段类型?有可能吗?
关于我发现的唯一可关联信息是Yii forum,但使用格式不同:
yii\widgets\ActiveForm
我希望用法类似于yii表单类型:
$form->myCheckbox($model, 'attribute_name');
答案 0 :(得分:0)
您需要创建:
ActiveField
类,其方法为JsonInput()
(使用您的小部件配置调用widget()
)。ActiveForm
类更改为fieldClass
属性到您的自定义ActiveField
类。您可以将@method \my\custom\ActiveField field(\yii\base\Model $model, string $attribute, array $options = [])
添加到ActiveForm
的PHPDoc中,以便更好地完成代码。您也可以跳过创建自己的ActiveForm
并更改fieldClass
ad hoc:
$form = ActiveForm::begin([
'fieldClass' => \my\custom\ActiveField::class,
])
但您需要每次都重复此操作,并且您无法在ActiveField
中获得自定义方法的代码完成。