标题似乎有点奇怪,因为我试图通过外行的方式来解释我的困境。
我想要实现的是从我可以收集到的东西,相当简单但是......我似乎无法将手指放在它上面。
我有一个下拉选择菜单,用户可以选择居住在帮助者中的居住国家/地区 - 例如:
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']; ?>
</dd>
非常感谢任何和所有帮助!
答案 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
}
}