YII2自定义字段类型



我正在使用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]);

您需要创建:

  1. 使用方法JsonInput()的自定义ActiveField类(用您的小部件配置调用widget()(。
  2. 自定义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中的自定义方法完成代码。

相关内容

  • 没有找到相关文章

最新更新