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

↘锁芯ラ 提交于 2019-12-30 08:19:08

问题


I want set error validation to input field manually in controller example:

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

other question: i want to ask : bindModel ( in this case , I use bindModel in Behaviors ) 'll cause loss of relationship with other model but is bindModel cause loss of $var validate,too ?


回答1:


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";
}



回答2:


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

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



回答3:


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.




回答4:


Probably you are looking for something like this




回答5:


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.




回答6:


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.



来源:https://stackoverflow.com/questions/3589898/cakephp-how-set-error-validation-to-input-field-manually-in-controller

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