我正在使用cakephp。我有一个带有元素数组的表单。 例如: -
<textarea name="data[User][0][description]>
<textarea name="data[User][1][description]>
从控制器,我需要使数组字段无效(手动),如果它是空的并且需要向相应的字段显示错误。 如果字段是元素数组,那么使字段无效的正确语法是什么? 我知道,以下内容适用于单个元素。如何为元素数组?
$this->User->invalidate("description");
答案 0 :(得分:4)
很遗憾,您无法使用该功能使字段无效。
但是invalidate()的作用是什么?
function invalidate($field, $value = true) {
if (!is_array($this->validationErrors)) {
$this->validationErrors = array();
}
$this->validationErrors[$field] = $value;
}
它只是设置了模型的validationErrors。
因此,您可以在Controller中执行以下操作(但我也呼吁您在模型中移动该验证):
$this->User->validationErrors[1]['description'] = 'Your error message';
以下代码将使列表中的第二个描述无效。
HTH
答案 1 :(得分:4)
您可以输入视图:
<?php
echo $this->Form->error("User.1.description");
?>
答案 2 :(得分:0)
谢谢Nik,
你的回答对我有帮助,但中途,因为我的问题是其他子场的复合场。
account_number {
bank_code,
bank_office,
check_digit,
account
}
在这种情况下,如果我们需要在一个子字段中输入验证错误,这就是解决方案:
$this->Model->validationErrors['account_number']['bank_code'][0] = 'Your message error';
我希望这有助于某人。
问候。
答案 3 :(得分:0)
我有类似的问题,因为它是针对管理员面板我在第一级字段显示错误消息,即仅针对此部分。
如果您在控制器上进行验证,只需创建一个包含字段名称和错误消息的错误数组,在控制器中设置它并在视图中显示in_array($ field,$ withErrorArray)时显示消息。