CakePHP验证错误消息 - 如何传递它们?

时间:2010-12-28 17:12:19

标签: validation cakephp forms

请注意:我不再试图这样做,因为我找到了另一种方法,但将来知道答案可能会有用。

我有一个与控制器上的index()操作关联的视图(index.ctp)中的表单。该表单应将数据发布到同一控制器中的另一个操作contact()。第二个操作没有视图,只是处理信息并根据结果重定向用户。此操作正在进行验证,并在发生错误时将用户重定向到引用程序(在本例中为索引),然后错误应显示在索引中。请注意,该模型不使用数据库表,但它仅用于定义验证规则。

验证正确进行并报告预期的错误。为了在重定向后检索错误,它将$ this-> ModelName-> invalidFields()数组写入在重定向后在index()操作上检索的会话变量。 此数组将传递给视图的$ errors变量。现在出现了问题。虽然错误在重定向之间正确传递,但不会附加到相应的表单。我怎么能做到这一点?表单具有所有常规名称,因此它应该是自动的,但它不是。

以下是相关代码的一部分:

索引视图:

echo $this->Form->create('Contact', array('url' => '/contacts/contact'));
echo (rest of form) ...
echo $this->Form->end(__('send message', true));

联系人控制器:

function index() {

    if ($this->Session->check('Contact.errors')) {
        $this->set('errors', $this->Session->read('Contact.errors'));
    }
}

function contact() {

    if (!empty($this->data)) {
        $this->Contact->set($this->data);

        if ($this->Contact->validates()) {
            (send the email)
        }
        else {
            $this->Session->write('Contact.errors', $this->Contact->invalidFields());
            $this->redirect($this->referer);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为在会话变量中编写验证错误并不是一个好主意。我不是CakePHP专家,但我不认为这是你应该这样做的方式。您的所有表单都应指向您所在的网址,因此用户输入的数据不会丢失。

您可以在问题中添加一些代码吗?