2011-04-21 51 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