2011-07-30 55 views
1

標題似乎有點奇怪,因爲我試圖通過外行的方式來解釋我的困境。將add.cpt中的下拉菜單中的數據匹配到view.ctp

我試圖實現的是從我能收集的東西,相當簡單,但..我似乎無法將我的手指放在它上面。

我有一個下拉選擇菜單,用戶可以選擇駐留在一個幫手居住的國家 - 下面的例子:在add.ctp

class CountryListHelper extends FormHelper { 

    var $helpers = array('Form'); 

    function select($fieldname) { 
    $list = $this->Form->input($fieldname , array(
     'type' => 'select', 'label' => 'Country of Residence', 'options' => array(
     '' => 'Please select a country', 
     'AF' => 'Afganistan', 
     'AL' => 'Albania', 
     'DZ' => 'Algeria', 
     ................. 
     ), 
     'error' => 'Please select a country')); 
     return $this->output($list); 
    } 
} 

<?php echo $this->CountryList->select('country');?> 

很簡單東西 - 保存它寫的首字母縮略詞到國家/地區。

我的問題是..當將數據拉到view.ctp時,我將如何顯示完整的國家名稱作爲保存在數據庫中的首字母縮寫而不必將整個列表寫入view.ctp和匹配首字母縮略詞到國家名稱那裏..

<dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Country of Residence'); ?></dt> 
     <dd<?php if ($i++ % 2 == 0) echo $class;?>> 
      <?php echo $user['User']['country']; ?> 
      &nbsp; 
     </dd> 

任何和所有的幫助,非常感謝!

回答

1

向助手添加一個新函數,該函數返回國家的全名。

class CountryListHelper extends FormHelper { 

    var $helpers = array('Form'); 
    var $countryList = array(
     'AF' => 'Afganistan', 
     'AL' => 'Albania', 
     'DZ' => 'Algeria', 
     ................. 
    ); 

    function select($fieldname) { 
     $list = $this->Form->input($fieldname , array(
     'type' => 'select', 'label' => 'Country of Residence', 
     'options' => $this->countryList, 
     'empty' => 'Please select a country', 
     'error' => 'Please select a country')); 
     return $this->output($list); 
    } 

    function fullName($abbr) { 
     return $this->countryList[ $abbr ]; 
     // + error checking 
    } 
} 
+0

你可能可以詳細說明這個新功能全名嗎?我不太遵循如何進行數據比較.. – Plastika

+0

它所做的只是從數組中選擇國家名稱。這就像你做'$ x = array(1 =>'foo',2 =>'bar'); $ y = $ x [1];'但帶有指定鍵。所以如果你用'$ this-> CountryList-> fullName('AF')來調用它,'它會返回'Afganistan'。 – JJJ

+0

感謝您的幫助! Tiz像個魅力一樣工作;-) – Plastika