将add.cpt下拉菜单中的数据与view.ctp匹配

时间:2011-07-30 06:04:25

标签: cakephp cakephp-1.3

标题似乎有点奇怪,因为我试图通过外行的方式来解释我的困境。

我想要实现的是从我可以收集到的东西,相当简单但是......我似乎无法将手指放在它上面。

我有一个下拉选择菜单,用户可以选择居住在帮助者中的居住国家/地区 - 例如:

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);
  }
}

在add.ctp中:

<?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 个答案:

答案 0 :(得分: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
  }
}