После прочтения 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 для поля без модели? Как вручную аннулировать поле, полученное из такой формы?
Самый простой способ — отправить ошибку в представление напрямую:
$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
]);
Других решений пока нет …