从Yii模型获取规则属性

从Yii模型获取规则属性,yii,Yii,也许这个问题很简单,但我没有找到答案 在我的模型中,我有一个规则: array('name', 'length', 'max'=>65), 在我看来,我有以下代码: $form->textField($model,'name'); 渲染后,我有: <input id="name" type="text" value="" maxlength="65" name="name"> 一切正常,但是否可以从视图页面上的模型中获取“最大长度”属性? 我想在页面上的某个地方

也许这个问题很简单,但我没有找到答案

在我的模型中,我有一个规则:

array('name', 'length', 'max'=>65),
在我看来,我有以下代码:

$form->textField($model,'name');
渲染后,我有:

<input id="name" type="text" value="" maxlength="65" name="name">

一切正常,但是否可以从视图页面上的模型中获取“最大长度”属性? 我想在页面上的某个地方显示最大长度,但无法获取此属性

谢谢

您可以使用:

$model->getValidators('name');
这将返回应用于“name”属性的验证程序数组。然后查找StringValidator及其名为“max”的字段,例如。

您可以使用:

$model->getValidators('name');
这将返回应用于“name”属性的验证程序数组。然后查找StringValidator及其名为“max”的字段,例如。

尝试以下操作:

foreach ($model->getValidators('name') as $validator) {
    if ($validator instanceof CStringValidator && $validator->max !== null) {
        echo 'this is the max length ' . $validator->max;
        break;
    }
}
这将返回“name”属性的所有验证器。然后搜索CStringValidator并返回最大大小。

尝试以下操作:

foreach ($model->getValidators('name') as $validator) {
    if ($validator instanceof CStringValidator && $validator->max !== null) {
        echo 'this is the max length ' . $validator->max;
        break;
    }
}

这将返回“name”属性的所有验证器。然后搜索
CStringValidator
并返回最大大小。

在Yii2中
getValidators()
不接受参数。您可以在Yii2中使用带有参数的
getActiveValidators()
。哪一个更好,因为它只返回适用的验证器。我必须添加验证器类的完整路径,使其在Yi2中工作(如果yii2
getValidators()
中的($validator instanceof\yii\validators\StringValidator…)不带参数。您可以使用
getActiveValidators()
在Yii2中有一个参数。哪个更好,因为它只返回适用的验证器。我必须添加验证器类的完整路径以使其在Yii2中工作(if($validator instanceof\yii\validators\StringValidator…)