CakePHP Automagic Form Helper с ассоциациями - PullRequest
0 голосов
/ 24 января 2012

У меня есть две модели CakePHP, Тесты и Вопросы, где у Теста много вопросов, а у Вопроса только один тест.

Ни один из этих кодов:

echo $form->create("Question", array('action' => 'add'));
echo $form->input("text");
echo $form->input("Test.id", array( 'value' => $test['Test']['id']  , 'type' => 'hidden') ); 
echo $form->end("Add");

Ни:

echo $form->create("Question", array('action' => 'add'));
echo $form->input("text");
echo $form->input("Question.Test.id", array( 'value' => $test['Test']['id']  , 'type' => 'hidden') ); 
echo $form->end("Add");

связывает новый вопрос с тестом (но создает его в базе данных).

$ test ['Test'] ['id'] действительно выводит правильный идентификатор.

Помощь оценена.

Ответы [ 3 ]

1 голос
/ 24 января 2012

Вы должны связать (если вы еще этого не сделали) две модели с hasOne и hasMany ассоциациями, создав таким образом в таблице questions столбец с именем test_id (который называется ForeignKey ).

Форма вопроса становится такой:

echo $form->create("Question", array('action' => 'add'));
echo $form->input("text");
echo $form->input("Question.test_id", array( 'value' => $test['Test']['id']  , 'type' => 'hidden') ); 
echo $form->end("Add");
1 голос
/ 24 января 2012

Ваше имя отключено. Вместо этого вы должны вызвать ваше скрытое поле Question.test_id, поскольку это поле, в котором следует сохранить значение. Например:

$this->Form->input('Question.test_id', array('type' => 'hidden', 'value' => $test['Test']['id']));
0 голосов
/ 30 августа 2017

Я знаю, что этот вопрос старый, но для тех, кто пришел сюда, как я, ища ответы CakePHP 3, соглашение об именах ассоциаций для входных данных изменилось: table.field для ассоциаций BelongsTo / HasOne и tables.field для HasMany /Принадлежит многим ассоциациям.

Читайте документы для получения дополнительной информации.

...