2011-09-06 29 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来加载城市,每当一个国家改变。 –