【发布时间】:2017-10-20 16:40:05
【问题描述】:
我正在构建一个多步骤表单输入(“向导”),其中用户在多个表单输入视图上输入实体的一部分。在每一步,我只想验证输入数据(而不是整个实体)。
我的问题是如何将 error() 与字段名称数组一起使用。
该模型有 12 个带有验证规则的字段。我想在一个控制器操作中验证其中的 3 个。
所以,在这个控制器动作中,我得到三个输入
$thedata = $this->request->data;
这会导致:
['number' => '102','color' => 'blue','size' => 'large']
然后我创建一个字段名称数组:
$thearray = array_keys($thedata);
这会导致:
[
(int) 0 => 'number',
(int) 1 => 'color',
(int) 2 => 'size']
现在我想检查这三个字段是否有错误。
$errors = $this->Items->newEntity($this->request->data)->errors($thearray);
这会导致检查所有 12 个定义了验证的字段,而不仅仅是数组中的三个,并且验证失败(它会提取实体中的所有错误)。
如果我只定义一个字段来检查它是否有效:
$errors = $this->Items->newEntity($this->request->data)->errors('number');
这仅正确验证字段“数字”并产生所需的结果。
但是,传递字段数组而不是具有单个字段名称的字符串会验证所有需要验证的字段。
另外,我尝试将数组硬编码为 errors() 的参数:
$errors = $this->Items->newEntity($this->request->data)->errors(['number','color']);
这还会检查表定义中的所有 12 个字段,而不仅仅是这两个。
所以问题是,如果您只想检查两个或三个特定字段,如何准备数组并将其传递给 errors() 方法?
提前感谢您的任何建议! D
感谢
【问题讨论】:
标签: cakephp-3.0