CakePHP SET错误=>所有表格都是假的

时间:2011-09-10 20:34:43

标签: forms cakephp

我想处理有关表单验证的应用程序反馈。 为此,我使用

检查控制器中的模型验证
// 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');

            }

我知道有一种方法可以使用'error'=&gt;摆脱表单字段错误false,但我想为整个应用程序设置它,因此适用于所有形式的所有字段。 它必须有一种方法来设置对象本身,如果有人告诉我,我将感激不尽。 多谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

虽然覆盖单个属性似乎有点极端,但您可以通过扩展核心FormHelper来实现这一点。这将允许您使Anh Pham的original suggestion成为所有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())。 CakePHP 2.0引入了辅助别名来克服这一点,但是现在必须采用一些技巧来继续使用“Form”。我发现的一篇博文显示了如何backport the functionality和另一个管理允许helper to do it本身。我个人使用以下内容没有任何问题:

// 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');

}