2011-09-06 30 views
1

我的兩個下拉菜單中的一個用於我的國家和其他城市的頁面上。 當我最初加載頁面時,我將該國家設置爲從用戶註冊加載的默認國家/地區。然後我加載該國的城市。當刷新頁面時,Cakephp下拉菜單不顯示正確的數據

現在的問題是,當我更改國家下拉菜單並刷新頁面時,我的國家下拉選擇的值保持不變,但已經更改,但城市從默認國家加載。

我在控制器的視圖中獲得了正確的值,但視圖沒有正確設置。 在我看來,代碼如下

echo $this->Form->input('from_country_code', 
      array(
      'options'=>$countries, 
      'id'=>'from_country_code', 
      'label' => __('Country',true), 
      'selected'=>$selectedCountryCode 
      ) 
     ); 

其次,請給我解釋一下,我怎麼可以檢測到頁面被刷新,並保留改變下拉值和不執行整個動作控制器代碼。

任何幫助將不勝感激。

更新 - 這裏的我的控制器代碼

function add() { 

    $currentUser = $this->Auth->user(); 
    $countryMap = $this->requestAction('/countries/getList/'); 
    $this->set('countries',$countryMap); 
    $this->set('selectedCountryCode',$currentUser['City']['countriesCode']); 

    $cityMap = $this->requestAction('/cities/getListByCountryCode/'.$currentUser['City']['countriesCode']); 
    $this->set('cities',$cityMap); 

    if(!empty($this->data)) { 
     if($this->Request->saveAll($this->data)) { 
      $this->Session->setFlash('The Request was successfully Posted'); 
      $this->redirect(array('controller'=>'users','action'=>'requests')); 
     } else { 
      $this->Session->setFlash('The Request was not saved. Please try again'); 
     } 
    } 

} 

請注意,我遇到的問題是,頁面上刷新全國下拉列表中選擇屬性沒有設置正確。即使我刷新頁面,我檢查了控制器的值是否正確。

Im將選定的國家/地區值設置在此變量@selectedCountryCode中。

+0

您沒有正確提交頁面。根據我的知識,firefox會在刷新頁面後保留表單信息,無論您填寫完整。您希望在您的控制器中取得選定的狀態 - 直到您提交表單。你能否顯示你的控制器代碼,以便我們可以。請驗證您的代碼並在其他某個瀏覽器中檢查它,或者在地址欄中按回車鍵而不是刷新。 – Vins

+0

我已經添加了上面的控制器代碼。我唯一的問題是,當我刷新頁面時,下拉選擇的值沒有正確設置。 –

回答

0

我不確定要理解。你在同一頁面上有兩個下拉列表,你想要做什麼是根據第一個元素中的選定元素更新第二個元素?因此用戶將不得不點擊刷新按鈕來更新第二個列表?

如果這是你的意思,我認爲這是不是用戶友好的,甚至不是一個標準的方式來瀏覽互聯網。最重要的是,當你點擊刷新按鈕時,整個控制器動作再次執行,這是絕對正常的。實際上,點擊刷新按鈕意味着'請再次執行網頁邏輯'。

如果您想要更方便用戶的方式來更新第二個下拉列表,您應該搜索Javascript方法來完成。例如見:http://nuts-and-bolts-of-cakephp.com/2010/03/10/use-cakephp-jquery-to-build-dynamic-selects/

+0

我沒有使用頁面刷新獲取城市。這種情況只有當我第一次打開該頁面或在任何時候刷新它。雖然我在頁面上使用cakephp ajax來加載城市,每當一個國家改變。 –

0

你不應該使用刷新來做到這一點,這使得控制器邏輯過於複雜。使用JavaScript更改基於國家/地區列表的城市列表。您可能想要使用ajax來獲取城市列表。

+0

我沒有使用頁面刷新獲取城市。這種情況只有當我第一次打開該頁面或在任何時候刷新它。雖然我在頁面上使用cakephp ajax來加載城市,每當一個國家改變。 –