阅读 CakePHP 3.x 中的验证规则 属性 以便在 js 函数中使用
Read property of a validation rule in CakePHP 3.x for use in a js function
我的一个 Table
class 中有一个验证规则,如下所示:
public function validationDefault(Validator $validator)
{
$validator
->scalar('comment')
->maxLength('comment', 3000)
->requirePresence('comment', 'create')
->notEmpty('comment');
return $validator;
}
这会验证输入的 comment
字段,这意味着它的长度不能超过 3000 个字符。在 PHP.
中工作时,所有这些都很好
我的应用程序的一部分使用 JavaScript 字符计数器 - 它告诉用户在键入时他们在字段中剩余的字符数。这个 js 工作正常,限制 3000 硬编码。
但是,我想知道是否有办法避免在我的 js 中硬编码此限制?因为否则我的代码不是 DRY,因为我在多个地方定义了 3000 限制,如果它改变了 remember/update.
就会有问题
是否可以直接从 validationDefault
中读取 maxLength
属性 的 comment
字段?这个问题涉及如何访问Table class中定义的数据;我很清楚如何通过 ajax.
将它传递给 js
我没有任何进一步的代码可以显示,因为我不知道 if/how 这甚至是可能的。
蛋糕PHP 3.5.13
要获取验证规则值,您必须从 Table
获取 Validator
,然后获取 ValidationSet
,然后是 ValidationRule
,您可以从中提取所需的结果.下面的示例控制器代码:
$validator = $this->YourTable->getValidator("default");
$validationSet = $validator->field("comment");
$validationRule = $validationSet->rule("maxLength");
$result = $validationRule->get("pass");
或者,仅在一行中:
$result = $this->YourTable->getValidator("default")->field("comment")->rule("maxLength")->get("pass");
返回值将是传递给验证规则的附加参数数组,在您的情况下它应该如下所示:
array(1) {
[0]=>
int(3000)
}
此外,@ndm 在他的回答中提到了其他可能性:
On form helper/context level it's also possible to read the schema, and support for transalting its length configuration and the validation rule value into a maxlength HTML attribute is being implemented for CakePHP 3.7
延伸阅读:
我的一个 Table
class 中有一个验证规则,如下所示:
public function validationDefault(Validator $validator)
{
$validator
->scalar('comment')
->maxLength('comment', 3000)
->requirePresence('comment', 'create')
->notEmpty('comment');
return $validator;
}
这会验证输入的 comment
字段,这意味着它的长度不能超过 3000 个字符。在 PHP.
我的应用程序的一部分使用 JavaScript 字符计数器 - 它告诉用户在键入时他们在字段中剩余的字符数。这个 js 工作正常,限制 3000 硬编码。
但是,我想知道是否有办法避免在我的 js 中硬编码此限制?因为否则我的代码不是 DRY,因为我在多个地方定义了 3000 限制,如果它改变了 remember/update.
就会有问题是否可以直接从 validationDefault
中读取 maxLength
属性 的 comment
字段?这个问题涉及如何访问Table class中定义的数据;我很清楚如何通过 ajax.
我没有任何进一步的代码可以显示,因为我不知道 if/how 这甚至是可能的。
蛋糕PHP 3.5.13
要获取验证规则值,您必须从 Table
获取 Validator
,然后获取 ValidationSet
,然后是 ValidationRule
,您可以从中提取所需的结果.下面的示例控制器代码:
$validator = $this->YourTable->getValidator("default");
$validationSet = $validator->field("comment");
$validationRule = $validationSet->rule("maxLength");
$result = $validationRule->get("pass");
或者,仅在一行中:
$result = $this->YourTable->getValidator("default")->field("comment")->rule("maxLength")->get("pass");
返回值将是传递给验证规则的附加参数数组,在您的情况下它应该如下所示:
array(1) {
[0]=>
int(3000)
}
此外,@ndm 在他的回答中提到了其他可能性:
On form helper/context level it's also possible to read the schema, and support for transalting its length configuration and the validation rule value into a maxlength HTML attribute is being implemented for CakePHP 3.7
延伸阅读: