【问题标题】:CakePHP 2.x: How to manually set validationErrors without a model?CakePHP 2.x:如何在没有模型的情况下手动设置验证错误?
【发布时间】:2016-11-30 02:44:06
【问题描述】:

阅读cakePHP: how set error validation to input field manually in controller 后,我想知道如果我们使用没有模型的表单,如何从控制器显示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?

        }
    }
}

我们不能在这里使用模型...如何为没有模型的字段设置验证错误?如何手动使来自此类表单的字段无效?

【问题讨论】:

    标签: php validation cakephp formhelper


    【解决方案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
    ]);
    

    【讨论】:

    • 这正是解决这个问题的方法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2019-11-14
    相关资源
    最近更新 更多