Поле выбора AutoMagic не заполняется в CakePHP - PullRequest
1 голос
/ 15 ноября 2010

У меня установлены следующие отношения между двумя моделями

  • История принадлежит StoryType
  • StoryType hasMany Story

Я настроил форму для выбора StoryType для каждой истории, используя следующий код:

echo $this->Form->input('Story.story_type_id', array('tabindex' => 2));

с этим кодом в контроллере для заполнения списка

$this->set('story_types', $this->Story->StoryType->find('list', array ('order' => 'title')));

Но он не заполняет поле выбора чем-либо. Я знаю, что опция find () работает, потому что выполнение отладки в контроллере приводит к следующему:

Array
(
    [1] => First Person
    [3] => Third Person
)

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

Есть идеи? Приветствия.

Ответы [ 3 ]

5 голосов
/ 16 ноября 2010

Вы не упоминаете, какую версию CakePHP вы используете, но попробуйте установить storyTypes вместо story_types:

$this->set( 'storyTypes', $this->Story->StoryType->find( 'list', array( 'order' => 'title' ) ) );

В более старых версиях CakePHP (до 1.3) измененные имена переменных установлены на headlessCamelCase, и, даже если вы используете 1.3.x, эта инфраструктура может остаться немного. Это немного досягаемо, но достаточно просто для тестирования, и кажется правдоподобным , что это может быть причиной вашей проблемы.

Мне будет любопытно посмотреть, что ты узнаешь.

1 голос
/ 22 сентября 2012

вот что вы действительно должны сделать .. (особенно для версии 2.x) - в случае, если некоторые люди сталкиваются с той же проблемой.

[внутри действия вашего контроллера)

$oneOfTheColumns = 'title'; //just for sake of making it clear - if you have to order the results

$storyTypes = $this->Story->StoryType('find', array('order'=>$oneOfTheColumns));
$this->set(compact('storyTypes'));

[внутри вашего зрения]

echo $this->Form->input('StoryType');
1 голос
/ 16 ноября 2010

Это немного глупо, но я думаю, что это сработает:

echo $this->Form->input('Story.story_type_id', array('tabindex' => 2, 'options' => $story_types));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...