我有一个cakephp 3.x项目,其中包含一个包含input-field" description"的表单。该模型具有maxLength,该字段定义为160个字符:
$validator
->allowEmpty('description')
->add('description', 'length', [
'rule' => ['maxLength', 160],
'message' => 'Products description cannot be longer than 160 characters'
]);
在我的模板中,我有一个小的javascript脚本,向用户显示他已经使用过的{160}个字符中有多少{。}}。
160现在是硬编码的。是否可以从我的表或实体中获取此值?像140 of 160 characters used
?
答案 0 :(得分:1)
不知道是否是正确或最好的方法,但您可以从Validator
中的Table
对象中检索Controller
,然后获取ValidatorSet
{1}}以及您字段的ValidatorRule
我在此假设您的模型名称为Products
您的ProductsController.php
:
$maxLength = $this->Products
->getValidator() // gets the validator for the ProductsTable
->field('description') // gets a ValidationSet for a field
->rule('length') // gets the Rule for the length
->get('pass'); // gets the value of the maxLength
然后你可以将thuis值传递给视图
$this->set('maxLength', $maxLength);
以便您可以在视图中使用该值
$this->Form->control('description', ['label' => 'max '.$maxLength.' chars']);
API参考