我需要返回表单验证,因为我在提交
后丢失了它我在新闻/观看/ 30 ---查看报告详情---- 在该页面中,我们添加了评论表单:
<h2>Add comment</h2>
<?php
echo $this->Form->create("Comment", array(
'url' => array('controller' => 'Comments', 'action' => 'add')
));
echo $this->Form->label("name");
echo $this->Form->input("name", array("label" => false, "class" => "textfield"));
echo $this->Form->label("email");
echo $this->Form->input("email", array("label" => false, "class" => "textfield"));
echo $this->Form->label("text");
echo $this->Form->textarea("text", array("label" => false));
echo $this->Form->input("object_id", array("type" => "hidden", "value" => $data['News']['id']));
echo $this->Form->input("type", array("type" => "hidden", "value" => "news"));
echo $this->Html->Link("Add Comment", "#", array("class" => "add_button", "onclick" => "$('#CommentViewForm').submit()"));
echo $this->Form->end();
?>
表单在评论控制器上提交:
在评论/添加中:
$isSuccess = $this->Comment->save($this->request->data);
if ($isSuccess) {
$this->Session->setFlash('your Comments has been added successfully and pending admin aproval.thanks ', 'default', array(), 'good');
} else {
$this->Session->setFlash('Failed to add your comment: <br/>Fill all the required fileds <br/>type correct Email', 'default', array(), 'bad');
}
$this->redirect(array("controller" => "News", "action" => "view", $id));
我对名称,电子邮件和评论本身做了一些验证规则 当用户输入有错误时返回添加注释表但没有像往常一样显示错误
我希望你能理解我,我等你的帮助 非常感谢
答案 0 :(得分:0)
尝试将'error'=>true
添加到每个输入表单助手中
比如echo $this->Form->input("name", array("label" => false, "class" => "textfield", 'error'=>true));
看看是否有效。
答案 1 :(得分:0)
如果您没有长时间使用CakePHP,那么您应该首先烘焙一些代码。 然后,您将了解到如果表单未验证您不应重定向:
if ($this->Comment->save($this->request->data)) {
$this->Session->setFlash('your Comments has been added successfully and pending admin aproval.thanks ', 'default', array(), 'good');
$this->redirect(array("controller" => "News", "action" => "view", $id));
} else {
$this->Session->setFlash('Failed to add your comment: <br/>Fill all the required fileds <br/>type correct Email', 'default', array(), 'bad');
// DO NOT redirect
}
烘焙模板将以这种方式烘焙您的控制器代码。这证明了一种处理表格的清晰透明的方式。
答案 2 :(得分:0)
您的重定向不会阻止您看到验证错误吗?即使有错误,您也会将用户重定向到新页面(视图页面),因此他们永远不会看到任何验证错误消息。
尝试评论这一行:
//$this->redirect(array("controller" => "News", "action" => "view", $id));
或以$ isSuccess为真为条件。
<强>更新强> Re:您的评论 - 问题是,如果您重定向远离打开表单的页面,您将无法(轻松)显示验证错误消息。最简单的方法是让你的表单提交给自己的行动 - 听到它你将它提交给另一个控制器的动作。
答案 3 :(得分:0)
我认为您需要在新闻控制器上的视图操作中处理表单&gt;保存,然后正如其他人所说的那样,如果验证失败,请不要从页面重定向。
如果您重定向,您至少仍会看到验证消息一次(来自会话Flash),但您将丢失填写的表单数据。
最简单的解决方案是将保存移至您的新闻 - &gt;视图方法,如果您的新闻和评论模型相关联,只需使用可用的遍历来保存评论:
$isSuccess = $this->News->Comment->save($this->request->data);