Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms CakePHP设置错误=>;所有形式的错误_Forms_Cakephp - Fatal编程技术网

Forms CakePHP设置错误=>;所有形式的错误

Forms CakePHP设置错误=>;所有形式的错误,forms,cakephp,Forms,Cakephp,我想处理有关表单验证的应用程序反馈。 为此,我在controller中检查模型验证,使用 // VALIDATE if ($this->Event->validates($this->data)) { // SAVE $this->Event->create(); if ($this->Event-&

我想处理有关表单验证的应用程序反馈。 为此,我在controller中检查模型验证,使用

// VALIDATE
            if ($this->Event->validates($this->data)) 
            {
                // SAVE
                    $this->Event->create();
                    if ($this->Event->saveAll($this->data, array('validate' => false))) 
                    {
                        $this->Session->setFlash('Evenimentul a fost salvat!', 'flash_admin_success');
                        $this->redirect(array('action' => 'index', 'admin' => true));
                    } else {
                        $this->Session->setFlash('Evenimentul nu a putut fi salvat. Va rugam sa incercati din nou!', 'flash_admin_error');
                    }
                ////////
                $errors = 'O EROARE';
                $this->set(compact('errors'));
            } 
            else 
            {
                // GET ERRORS to display it nicely :)
                    $errors = $this->Event->invalidFields();
                    $flash = '';
                    foreach($errors as $error)
                    {
                        $flash .= $error."<br />";
                    }
                    $this->Session->setFlash($flash, 'flash_admin_error');

            }
//验证
如果($this->Event->validates($this->data))
{
//拯救
$this->Event->create();
如果($this->Event->saveAll($this->data,array('validate'=>false)))
{
$this->Session->setFlash('evenimentula fost salvat!','flash\u admin\u success');
$this->redirect(数组('action'=>'index','admin'=>true));
}否则{
$this->Session->setFlash('Evenimentul nu a putut fi salvat.Va rugam sa incercati din nou!','flash\u admin\u error');
}
////////
$errors='O EROARE';
$this->set(压缩('errors');
} 
其他的
{
//获取错误以很好地显示它:)
$errors=$this->Event->invalidFields();
$flash='';
foreach($errors作为$error)
{
$flash.=$error.“
”; } $this->Session->setFlash($flash,'flash\u admin\u error'); }
我知道有一种方法可以使用'error'=>false来消除表单字段错误,但我想为整个应用程序设置此值,从而为所有表单中的所有字段设置此值。 它必须有一种设置对象本身的方法,如果有人告诉我,我将不胜感激。
太多了

编辑:这并不会真正禁用错误输出,但会隐藏错误:转到webroot/css/cake.generic.css添加
display:none
到选择器
div.error-message
。这是我能想到的实现您想要的最简单的方法。

尽管覆盖单个属性似乎有点极端,但您可以通过扩展核心FormHelper来实现这一点。这将允许您将Anh Pham设置为所有FormHelper实例的默认值:

// app/views/helpers/app_form.php
App::import('Helper', 'Time');
class AppFormHelper extends FormHelper {

    public $_inputDefaults = array('error' => false);

}
现在要像在CakePHP 1.3中一样使用它,您必须在整个应用程序中使用“
AppForm
”,从现在开始引用此帮助程序(即
$this->AppForm->input()
)。CakePHP2.0引入了帮助器别名来克服这一问题,但现在我们必须借助一些技巧来继续使用“
表单”
”。我发现的一篇博文展示了如何使用它,而另一篇博文则展示了如何管理它本身。我个人使用以下内容没有任何问题:

// app/views/app.php
class AppView extends View {

    function &_loadHelpers(&$loaded, $helpers, $parent = null) {
        $return = parent::_loadHelpers($loaded, $helpers, $parent);
        # rename App helpers (ie. AppHtml -> Html)
        foreach ($return as $helperName => $helper) {
            if (substr($helperName, 0, 3) === 'App') {
                $newHelperName = substr($helperName, 3);
                $return[$newHelperName] = $return[$helperName];
            }
        }
        # done
        return $return;
    }

}
要使用上面新创建的类,只需将以下内容添加到
AppController

// app/app_controller.php
class AppController extends Controller {

    public $helpers = array(/*...*/, 'AppForm');

    public $view = array('App');

}

为什么这么复杂?在这里,您似乎为一些已经开箱即用的东西创造了很多开销……我只想定制验证错误printig——更清楚地说,我想在某个时候实现一个jQueryUI,这样这些错误就会被放入一个“奇特”的框中。上面的代码不是最终的。谢谢你的建议。我是舒尔,在很多情况下我都会按照你说的去做。随着时间的推移,我希望变得更有效率。如果你知道如何去做我一开始要求的事情,我会提前感谢你!谢谢你的回答!我只是试着像你建议的那样设置_inputDefaults,但是没有效果,即使我没有在视图表单中覆盖它。如果它对你有用,也许我做错了什么,尽管我对此表示怀疑。如果你能想出另一种方法,我很感激!是的,我担心最后我不得不这么做。非常感谢您的支持!!非常感谢你,戴泽尔!这比我需要的还要多,但真的很好!再次感谢您的时间!