cakePHP: how set error validation to input field manually in controller

孤街醉人 提交于 2019-12-01 03:56:15

if the $validate is defined in the model, bindModel wont cause closs of $var validate.

As for you primary question; you can set/unset/update $validationErrors of the models..eg

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

This can be achieved using the invalidate method that will flag the field as having an error:-

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

If you want to invalidate an associated model, you can use something like this:

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

In my case it invalidates associated select multiple (HABTM) field.

Nik Chankov

Probably you are looking for something like this

Since a lot has passed since this has been answered in order to pass correct message you need to put it like this:

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

Form is expecting array of error messages.

2019 update for CakePHP3 in 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);

and in action.ctp

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

if your form based on table, and for modelless forms first you need to create src/Form/YourForm.php with schema definition and then call setErrors() on YourForm instance from controller.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!