我在单个视图编辑个人资料中有两个表单并更改密码。我已将changepassword表单操作设置为changePassword,而我正在使用
$this->autoRender = false;
$this->render("index");
$this->redirect("index#chngPassTab");
但由于重定向,我无法设置一些变量来查看。我不想使用会话。
所有我想根据控制器操作中的条件设置一些变量,在视图中获取这些变量值,并且在回发后重新加载页面时,应该为我使用$this->redirect("index#chngPassTab");
请指导我解决此问题的最佳方法。谢谢。
答案 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操作,它返回您想要返回的任何内容。或者,使用会话。