在cakephp中使用重定向时传递数据以进行查看

时间:2011-04-21 17:47:30

标签: cakephp variables view set cakephp-1.3

我在单个视图编辑个人资料中有两个表单并更改密码。我已将changepassword表单操作设置为changePassword,而我正在使用

$this->autoRender = false; 
$this->render("index");
$this->redirect("index#chngPassTab");

但由于重定向,我无法设置一些变量来查看。我不想使用会话。 所有我想根据控制器操作中的条件设置一些变量,在视图中获取这些变量值,并且在回发后重新加载页面时,应该为我使用$this->redirect("index#chngPassTab");

选择密码选项卡

请指导我解决此问题的最佳方法。谢谢。

4 个答案:

答案 0 :(得分:0)

在控制器的功能中尝试这个:

$this->set('name_of_variable', {YOUR DATA HERE});

然后在视图中,您可以访问变量:

<?php echo $name_of_variable; ?>

答案 1 :(得分:0)

我认为当您重定向到索引控制器时,需要在索引控制器中进行一些处理。处理表单时保存的任何项目都可以在数据库中使用,如果您正在处理基于URL的内容,则可以在呈现之前执行此操作。

加:

$this->autoRender(false);

会阻止您的控制器渲染,但随后调用

$this->render("index");

会尝试渲染索引视图,但调用

$this->redirect("index#chngPassTab");

会覆盖它并重定向它,在这种情况下你只需要进行重定向,渲染调用就变得毫无用处。

答案 2 :(得分:0)

Http在设计上是无国籍的。如果重定向最后一个请求的数据就消失了。这就是会议发明的原因。

如果您希望数据显示停止使用重定向。

此外,没有必要调用渲染和重定向,因为渲染永远不会被渲染。

答案 3 :(得分:0)

根据您解析到视图的数据设置jquery来处理更改会更容易吗?

因此,例如,在您发布帖子后,您的$whatever_variable已设置

然后在你看来

<script>
 <?php if(!empty($whatever_variable): ?>
     $('.tabs').tabs('select', '#chngPassTab');; //or whatever plugin yu are using
<?php endif?>
</script>

编辑:我的不好,只是重新阅读您的问题,并重申您的帖子操作与您的观点不同。在这种情况下发布到索引控制器然后从索引控制器调用changepassowrd操作,它返回您想要返回的任何内容。或者,使用会话。