显示cakephp 3.x模板中entity-field的最大长度

时间:2018-01-30 14:57:33

标签: cakephp cakephp-3.0

我有一个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

这样的东西

1 个答案:

答案 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参考

getValidator()

field()

rule()

get()