CakePHP:重定向后设置请求数据的正确方法

时间:2014-04-29 10:20:53

标签: forms cakephp-2.0

我想在重定向之后设置请求数据,因此用户不需要两次填写注册表单,表单在几个地方使用,需要返回引用者。

这样做的最佳方式是什么?我正在考虑设置会话并在阅读时再次销毁它。

我正在使用的方法如下:

// Check Existing User
if ((int) $this->User->checkIfUserExist($this->request->data['User']['username']) > 0) {
    $this->Session->setFlash('Username Exists');
    $this->redirect($this->referer());
}

1 个答案:

答案 0 :(得分:0)

它的床练习再次为填充数据设置会话。我会给你一种方式,希望它对你有所帮助。我不确定编码的结构是什么。我认为你在我的cakephp项目中遇到了同样的问题。

首先假设我们有一个控制器让我们说用户控制器,我们有一个像index这样的函数,然后我们为它创建一个视图文件。您可以在那里编写以下代码而不是代码

// Check Existing User
if ((int) $this->User->checkIfUserExist($this->request->data['User']['username']) > 0) {
   $this->set("message","Username Exists");
   $this->set("filled_data",$this->request->data)
}

然后在视图文件中,您可以编写此代码

<?php
if(isset($message) && $message!=""){?>
     <span class="sessionflash"><?php echo $message; ?></span>
<?php }
?>

将样式表提供给您想要提供的sessionflash。

然后在所有文本框中,您可以编写以下代码,例如我正在编写第一个名称文本框的代码

<input type="text" name="data[User][v_first_name]" id="v_first_name" value="<?php if(isset($filled_data) && isset($filled_data["User"]["v_first_name"])){echo $filled_data["User"]["v_first_name"]; } ?>">

所以这是我在遇到同样问题时使用的逻辑。如果您没有重定向到另一个页面并且在提交此数据时重定向到同一页面,则此示例很有用。

对不起,如果我理解你的要求是错误的。如果它有用,我会很高兴:)