CakePHP3 отношения «многие ко многим»

я пытаюсь сохранить форму, которая имеет отношение многие ко многим в CakePHP3, но я не могу правильно отобразить форму. (пользовательские теги HABTM)

В моем контроллере я устанавливаю объект, который хочу редактировать:

$user = $this->Users->get($id, [
    'contain' => ['Tags']
]);
$this->set(compact('user'));

В представлении у меня есть:

$options = [
    '1' => 'Tag 1',
    '2' => 'Tag 2'
];
echo $this->Form->select('tags', $options, [
    'multiple' => 'checkbox'
]);

Моя проблема заключается в том, что при загрузке выбранные теги не проверяются, как я могу это решить?


person user1521944    schedule 01.12.2014    source источник


Ответы (1)


Для такой ассоциации belongsToMany вы должны использовать ключ _ids в имени поля, чтобы помощник формы мог волшебным образом подобрать значения и поставить галочки.

$this->Form->select('tags._ids',  /* ... */);

Видеть

для некоторой информации.

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

контроллер

// ...
$tags = $this->Users->Tags->find('list');
$this->set(compact('user', 'tags'));

просмотреть

echo $this->Form->select('tags._ids', $tags, [
    'multiple' => 'checkbox'
]);

См. также Поваренная книга > Поиск ключа /Пары значений

person ndm    schedule 01.12.2014