Показать изображение рядом с флажками HABTM
Cane Кто-нибудь, дайте мне идеи по этому вопросу, пожалуйста!
Я сгенерирую несколько флажков из таблицы, которая связана с другой таблицей, имеющей связь HABTM. Я хотел бы создать несколько флажков с изображением вместе с текстом на этикетке.
Мои две таблицы являются items и items_characteristics. Таким образом, у элемента есть свойства HasAndBelongToMany, а у элемента ItemCharacteristic HasAndBelongToMany Items.
echo $this->Form->input('Item.ItemCharacteristic',array(
'label' =>false,
'type'=>'select',
'multiple'=>'checkbox',
'options' => $itemCharacteristics ,
'selected' => $this->Html->value('ItemCharacteristic.ItemCharacteristic')
));
Этот код генерирует список флажков правильно и отлично работает: это то, что у меня есть:
Который генерируется из БД из таблицы items_characteristics.
И это то, что я хочу иметь:
Кто-нибудь есть какие-либо идеи, как я могу достичь этого, пожалуйста?
1 ответ
Я предполагаю, что в вашем контроллере вы сделали что-то вроде:
$this->request->data = $this->Item->find('first', ... );
чтобы $data
содержит информацию о выбранных характеристиках в виде подмассива,
редактировать: я также предполагаю, что Item
HABTM ItemCharacteristic
тогда по вашему мнению
$checked_characteristics = Hash::extract($this->data, 'ItemCharacteristic.{n}.id');
foreach($itemCharacteristics as $id => $itemCharacteristic )
{
$checked = in_array($id, $checked_characteristics );
$img = $this->Html->image('cake.icon.png'); // put here the name
// of the icon you want to show
// based on the charateristic
// you are displayng
echo $this->Form->input(
'ItemCharacteristic.ItemCharacteristic.',
array(
'between' => $img,
'label' => $itemCharacteristic,
'value' => $id,
'type' => 'checkbox',
'checked' => $checked
)
);
}
редактировать: из вашего комментария я понимаю, что $itemCharacteristics
родом из find('list'
) заявление.
изменить его в find('all', array('recursive' => -1));
теперь твой код становится
foreach($itemCharacteristics as $itemCharacteristic )
{
$id = $itemCharacteristic['ItemCharacteristic']['id'];
$icon_name = $itemCharacteristic['ItemCharacteristic']['icon_name']; //or wherever you get your icon path
$img = $this->Html->image($icon_name);
$itemCharacteristicName = $itemCharacteristic['ItemCharacteristic']['name'];
// same as above
}