CakePHP - возможно ли иметь поле выбора с несколькими полями, отображаемыми в настройках? - PullRequest
0 голосов
/ 26 апреля 2011

Я хочу, чтобы пользователь мог выбрать ресторан из выпадающего списка. Я достигаю этого простым:

echo $this->Form->input(
    'Restaurant', array('multiple'=>false, array('empty' => true)));

Проблема, с которой я столкнулся: В некоторых ресторанах есть дубликаты названий, и мне нужно, чтобы пользователь знал, какой именно. Я хотел бы иметь идентификатор и / или адрес в опциях выбора, таких как:

<li value='62'>McDonalds (1234 Happy St) - #62</li>
<li value='63'>McDonalds (9876 French Fry Ln) - #63</li>
...etc

Есть ли способ сделать это? Я, очевидно, способен делать это с обычным HTML, но ... было бы неплохо остаться в CakePHP.

Заранее спасибо за любые мысли / предложения / указания!

1 Ответ

1 голос
/ 26 апреля 2011

Когда вы загружаете свои рестораны, вы на самом деле получаете такой массив

array (
  ID => NAME,
  ID => NAME
)

По сути, это связанный массив с идентификатором в качестве ключа и полем отображения в качестве значения. Поэтому, пока вы изменяете этот массив с помощью операции find или с помощью обычной итерации массива PHP, вы можете достичь своей цели.

EDIT

Таким образом, ваш ответ CakePHP VirtualFields

В вашей модели вы определяете это как

var $virtualFields = array(    
    'rest_unique_name' => 'CONCAT(Restaurant.first_name, " ", Restaurant.address)'
);

В вашем контроллере вы делаете это

   $opts   = array(
            'fields'    => array('id', 'rest_unique_name')
   );
   $restaurants  = $this->Restaurant->find('list', $opts);
...