Соответствие данных из выпадающего меню в add.cpt для view.ctp - PullRequest
1 голос
/ 30 июля 2011

Название кажется немного странным, так как я пытаюсь найти способ объяснить мою дилемму в терминах непрофессионала.

То, чего я пытаюсь добиться, - это то, что я могу собрать, довольно просто, но ... Я просто не могу показать на это пальцем.

У меня есть выпадающее меню выбора, в котором пользователи могут выбрать страну проживания, которая находится в помощнике - пример ниже:

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 Ответ

1 голос
/ 30 июля 2011

Добавить новую функцию для помощника, которая возвращает полное название страны.

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
  }
}
...