【发布时间】:2010-12-28 17:12:19
【问题描述】:
请注意:我不再尝试这样做,因为我找到了替代方案,但知道答案可能对将来有用。
我有一个位于与控制器上的 index() 操作相关联的视图 (index.ctp) 中的表单。该表单应将数据发布到同一控制器中的另一个操作contact()。第二个动作没有视图,它只是处理信息并根据结果重定向用户。此操作正在执行验证并将用户重定向到引用者(在本例中为索引)以防出错,然后错误应显示在 index.html 中。请注意,该模型不使用数据库表,而仅用于定义验证规则。
验证正确进行并报告预期错误。为了在重定向后检索错误,它将 $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);
}
}
}
【问题讨论】:
标签: validation cakephp forms