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

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

Так, например, у нас есть вид 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 для поля без модели? Как вручную аннулировать поле, полученное из такой формы?

2

Решение

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

$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
]);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]