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

后端 未结 6 404
南旧
南旧 2021-01-12 00:15

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

  if ($remainTime < 30) {
      ..... set error validation in here (error: lim         


        
相关标签:
6条回答
  • 2021-01-12 00:35

    Probably you are looking for something like this

    0 讨论(0)
  • 2021-01-12 00:40

    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.

    0 讨论(0)
  • 2021-01-12 00:42

    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";
    }
    
    0 讨论(0)
  • 2021-01-12 00:45

    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.

    0 讨论(0)
  • 2021-01-12 00:49

    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.

    0 讨论(0)
  • 2021-01-12 00:51

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

    $this->Model->invalidate('field_name', 'error message');
    
    0 讨论(0)
提交回复
热议问题