Как создать форму CakePHP с рекурсивными моделями - PullRequest
0 голосов
/ 26 августа 2011

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

Пример.

модель1 (идентификатор, поле1, поле2) модель2 (идентификатор, поле1, поле2) модель3 (идентификатор, поле1, поле2)

joinmodel(внешние ключи, которые соединяют модель1 и модель2, но принадлежат модели3.

Форма будет иметь поля из модели1 и модели1 без проблем, но поле для joinmodel-> model1 (field1) - это то, что меня заводит.

Я не уверен, что это совершенно ясно, что я пытаюсь достичь. Если это не имеет смысла, я опубликую свои реальные данные модели.

Ответы [ 2 ]

0 голосов
/ 26 августа 2011

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

$this->Form->input('Model1.0.field1');
$this->Form->input('Model1.0.field2');
$this->Form->input('Model2.0.field1');
$this->Form->input('Model2.0.field2');

Если вы 2-й ряд вы можете дать

$this->Form->input('Model1.1.field1');
$this->Form->input('Model1.1.field2');
$this->Form->input('Model2.1.field1');
$this->Form->input('Model2.0.field2');

и так далее ...

Наконец, вы можете сохранить все данные в одном кадре, используя

$this->Model->saveAll($this->data);

Где модель - это ваша основная модель, в которой вы создаете форму. Это также будет применять все проверки модели.

При сохранении в контроллере вы можете просто использовать

$this->Model1->saveAll($this->data);

0 голосов
/ 26 августа 2011

Я считаю, что это можно сделать, объявив элементы формы, вы должны сделать следующее:

echo $this->Form->input('Model1');
echo $this->Form->input('Model2');
echo $this->Form->input('Model3');
echo $this->Form->input('field');

Тогда в контроллере вы бы сделали $this->Model1->saveAll($this->data);

Подробнее

Еще один способ сделать это - сохранить данные модели, скажем, у Model2 есть внешний ключ моделей 1 и 3, затем сначала нужно сохранить модели 1 и 3, назначить идентификаторы соответствующим полям в Model2 и сохранить модель2. Конечно все в контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...