2011-04-21 68 views
0

我在单个视图编辑配置文件和更改密码上有两种形式。我已经设置了changepassword表单动作changePassword,我使用传递数据以在cakephp中使用重定向时查看

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

,但我不能设置一些varible查看由于重定向。我不想使用会话。 所有我想设置基于在控制器操作条件下一些变量,拿在考虑到这些变量的值,并在页面回发后重新加载密码选项卡应为我所用$this->redirect("index#chngPassTab");选择

请指引我解决这个问题最好的办法问题。谢谢。

回答

0

会更容易设置一个jquery来处理基于您解析视图的数据的变化?

如此之后,例如,你做你的$whatever_variable设置

然后在您的视图后

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

编辑:我的不好,只是重读你的问题,并reliased你的职位采取行动是不同的,那么你的看法。在这种情况下发布到索引控制器,然后从索引控制器调用changepassowrd动作,该动作返回您希望返回的任何内容。或者,使用会话。

0

试试这个控制器的功能:

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

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

<?php echo $name_of_variable; ?> 
+1

绝不会使用重定向 – dogmatic69 2011-04-21 18:45:10

0

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

加:

$this->autoRender(false); 

将从渲染,但然后调用

$this->render("index"); 

将尽力使你的索引视图,但调用

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

会重写它停止你的控制器并重定向它,你只需要在这种情况下做重定向,渲染调用就没用了。

+0

重定向需要一个数组的URL或相对的字符串URL,您的既不是。 – dogmatic69 2011-04-21 18:45:58

+0

实际上,字符串将是相对的,并且被添加到任何引用者的末尾。所以,如果你说重定向(“索引”),你来自/职位/添加它会带你到/职位/索引。这并不是我正在评论的内容。更重要的是,我说的是做更多的工作,这是无所事事。 – Matt 2011-04-21 19:28:16

+0

对不起,我没有使用任何数据库中的数据。如果数据无效,只显示一些错误消息。我无法在$ this-> render(“index”)中传递#chngPassTab;所以应该选择密码选项卡,因为jquery选项卡需要这个知道哪个选项卡应该被选中 – deep 2011-04-22 02:23:01

0

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

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

此外,调用渲染和重定向没有意义,因为渲染将永远不会呈现。

+0

是的,它会显示数据,但是有任何想法我可以做一个视图,以便当changepassword选项卡上提交按钮按下,页面重新加载它应该选择changepassword选项卡。我正在使用jquery选项卡菜单。它需要#changpassword参数来默认选择更改密码。 – deep 2011-04-22 02:18:43

+0

$ this-> Html-> link('meh',array('action'=>'something','#'=>'更改密码')); – dogmatic69 2011-04-23 19:00:44