CakePHP 2.x: Как вручную установить validationErrors без модели?

После прочтения cakePHP: как установить проверку ошибок для поля ввода вручную в контроллере, мне было интересно, как показать ошибку проверки из контроллера, если мы используем форму без модели?

Так, например, у нас есть представление checkSomething.ctp с формой, которую мы можем отправить.

echo $this->Form->create(false); // If we put "SomeModel" here, it would work.
echo $this->Form->input("myField");

И скажем, мы на /Home/CheckSomething/.

class HomeController extends AppController{
    public function CheckSomething(){

        // So manually validate a field
        if(strlen($this->request->data["myField"]) < 5){

            // myField is not valid, so we need to show an error near that field
            $this->SomeModel->invalidateField("myField", "You must enter at least 5 characters"); 

            // How to do this?

        }
    }
}

Мы не можем использовать здесь модель... Как установить validationError для поля без модели? Как вручную аннулировать поле, полученное из такой формы?


person Koen    schedule 26.07.2016    source источник


Ответы (1)


Самый простой способ - отправить ошибку в представление напрямую:

$errors = [];
if (strlen($this->request->data["myField"]) < 5) {
    $errors['myField'] = 'You must enter at least 5 characters'; 
}
$this->set('errors', $errors);

И на ваш взгляд:

echo $this->Form->create(false);
echo $this->Form->input('myField', [
    'error' => isset($errors['myField']) ? $errors['myField'] : false
]);
person Holt    schedule 26.07.2016
comment
Именно так можно решить эту проблему. Спасибо! - person Koen; 04.08.2016