2016-07-26 35 views
2

在阅读cakePHP: how set error validation to input field manually in controller后,我想知道如果我们使用没有模型的表单,如何显示控制器的validationError?CakePHP 2.x:如何在没有模型的情况下手动设置validationErrors?

例如,我们有一个视图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?如何手动无效来自这种形式的字段?

回答

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 
]); 
+0

这正是解决这一问题的方法。谢谢! – Koen

相关问题