CakePHP: Как я могу настроить метки для нескольких флажков - PullRequest
0 голосов
/ 04 января 2011

Я много занимался поиском, но пока не смог решить эту проблему. У меня есть форма регистрации пользователя, где пользователь может выбрать несколько филиалов магазина в качестве избранных при регистрации. У меня эти отношения настроены как HABTM.

Я могу отображать филиалы магазина в виде нескольких флажков, но мне нужно отобразить название магазина (ветви магазина принадлежат именам магазинов) вместе с именем филиала в метке для каждого флажка. Что-то вроде:

Леви - Прогулка по каналу

где Canal Walk - это название филиала, а Levi's - название магазина (из другой таблицы)

Может кто-нибудь поделиться, пожалуйста, как это сделать?

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Я бы сделал все это в представлении.Если ваши отношения HABTM настроены правильно, запрос модели Store должен работать примерно так:

$stores = $this->Store->findAll();
//Returns
Array([0] => Array(
    'Store' => array(),
    'Branch' => array(
        [0] => array(),
        [1] => array()...));

Затем передайте переменную $ stores в представление и выполните итерацию по ней с двойным вложенным циклом.

foreach($stores as $store){  
        foreach($store['Branch'] as $branch){
            //Code to output checkbox by using $branch['name']
        }
    }
0 голосов
/ 04 января 2011

Я не проверял это, но это может сработать (или помочь вам по правильному пути):

$branches = $this->Branch->find('list', array(
    'fields' => array('Branch.id', 'CONCAT(Store.name, " - ", Branch.name)'),
    'joins' => array(
        array(
            'table' => 'stores',
            'alias' => 'Store',
            'type' => 'inner',
            'foreignKey' => false,
            'conditions' => array('Branch.store_id' => 'Store.id')
        )
    )
));

Установите это в своем контроллере или оставьте вещи СУХИМ, поместив их в вашу модель в функции, такой как findFullList()

Надеюсь, это поможет!

...