2012-05-30 4 views
0

Я использую Cake PHP с подмостками. У меня возникла проблема с кодом, который он генерирует, и вы хотите узнать, есть ли способ обойти его, если я должен закончить создание пользовательских представлений.cake php auto select external keys при редактировании

Допустим, у меня есть две модели тестов и вопросов. У тестов может быть много Вопросов, и у Вопроса есть только один тест. У меня есть hasMany и принадлежит ассоциациям.

Теперь, вид лесов, созданный для тортов, дает мне кнопку внизу в разделе «Вопросы, относящиеся», чтобы создать вопрос. Когда я нажимаю эту кнопку, я получаю форму «Добавить» для вопросов, но правильный тест не выбирается автоматически.

Есть ли в любом случае, я могу заставить кнопку передать test_id в форму вопроса и иметь это авто заполнение?

ответ

-1

Вам нужно добавить var $uses = array('Question','Test'); к questions_controller.php

0

Я вижу, как вы думаете, , которые могли бы работать; но Cake не знает, что вы хотите, чтобы это было из коробки.

Вам нужно будет настроить метод Question Add, или создать новый один:

Пример кода:

// action: tests/view/1 (viewing test 1, and all related questions) 
// create a link containing the ID of the current test as a param 
<?php echo $this->Html->link('Add Question to Test', 
              array('controller'=>'questions', 
               'action' => 'add_question', 
               $test['Test']['id']) 
          ); 
?> 

Так что - если у вас есть доступ к id текущего test, вы можете передать его как параметр для вашего контроллера questions (есть несколько способов сделать это).

Тогда:

// view - questions/add_question/1 
<h1>Adding A Question to Test 1</h1> 
<?php 
// create your add question form 

$this->Form->input('test_id', array('type'=>'hidden', 
            'value' => $this->params['pass'][0])); 
// create a hidden field with the value of the first passed param (the test id) 

затем в контроллере, то test_id уже установлен, поэтому, когда вы сохраняете вопрос, сохраняется с соответствующим test_id

0

Если вы хотите применить это все ваши проекты CakePHP, созданные с использованием пирога, вы можете сделать пару небольших изменений в ядре CakePHP, чтобы включить это, как показано здесь: https://github.com/srs81/cakephp/commit/7d92c8f676c79185fa6a74ab2070f240c555a2a0

Основная информация эти два изменения добавят ссылочную идентификатор модели/контроллера и имя в действие «добавить», и это обрабатывается в действии «добавить», где выбран правильный идентификатор.

Это НЕ работает для моделей HABTM, но должно работать нормально ни для чего другого.

 Смежные вопросы

  • Нет связанных вопросов^_^