cakePHP:如何在控制器中手动设置错误验证到输入字段

时间:2010-08-28 07:38:08

标签: validation cakephp cakephp-1.3

我希望在控制器中手动输入字段设置错误验证 例如:

  if ($remainTime < 30) {
      ..... set error validation in here (error: limitTime ), ( error is not in model )
  }

其他问题:我想问: bindModel(在这种情况下,我在行为中使用bindModel)将导致与其他模型失去关系 但是bindModel是否导致$ var validate丢失?

6 个答案:

答案 0 :(得分:15)

如果在模型中定义了$ validate,则bindModel不会导致$ var validate的closs。

至于你的主要问题;你可以设置/取消设置/更新模型的验证错误..eg

($remainTime < 30) {
   $this->Model->validationErrors['limitTime'] = "time is less than 30";
}

答案 1 :(得分:15)

这可以使用invalidate方法来实现,该方法将字段标记为有错误: -

$this->Model->invalidate('field_name', 'error message');

答案 2 :(得分:1)

如果要使关联模型无效,可以使用以下内容:

$this->Model1->Model2->invalidate('Model2', __("Your validation message"));

在我的情况下,它会使关联的选择多个(HABTM)字段无效。

答案 3 :(得分:0)

可能你正在寻找like this

的东西

答案 4 :(得分:0)

由于为了传递正确的信息已经回答了很多,你需要这样说:

$this->Model->validationErrors['limitTime'] = array("time is less than 30");

Form需要一系列错误消息。

答案 5 :(得分:0)

CakePHP3的2019更新 在YourController.php

// creane new
$entity = $this->YouTable->newEntity();

// or get existing from database
// $entity = $this->YouTable->get($id);

// invalidate fields
$entity->setErrors('your_field', 'error message');
$this->set('$entity', $entity);

action.ctp

// create form based on your entity
echo $this->Form->create($entity);
// and include your control
echo $this->Form->control('your_field');

如果您的表单基于表格,并且首先针对modelless forms,您需要创建具有架构定义的src/Form/YourForm.php,然后在控制器的setErrors()实例上调用YourForm