2010-11-15 32 views
1
不填充

我有两个型号AUTOMAGIC选择框CakePHP中

  • 故事属于关联故事类型
  • 故事类型的hasMany故事

我已经建立的下列关系建立使用以下代码为每个故事选择故事类型的表格:

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

与此鳕鱼E在控制器来填充列表

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

但它不填充任何东西的选择框。我知道find()方法的选择工作,因为在控制器中做了调试产生这样的:

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

奇怪的是,它是完全一样的代码,只需查询其他车型,来填充的东西选择列表就像用户和流派一样,只是故事类型不起作用。

任何想法?干杯。

回答

5

你没有提到你正在使用的CakePHP的版本,但尝试设置storyTypes而不是story_types

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

老版本的CakePHP(1.3之前版本)修改过的设置变量名称为headlessCamelCase,即使您使用的是1.3.x版本,也可能会有一点点的基础设施徘徊。这是一个有点触手可及,但它很容易测试,似乎似乎,这可能是你的问题的根源。

我会好奇的,看看你发现了什么。

+0

我使用的是1.3(.4我认为),而且您的解决方案效果很好 - 但是,这是否意味着它可能随着我升级蛋糕而改变? – Daniel 2010-11-17 12:03:56

+0

它可能。鉴于你找到的东西,看起来他们已经做出了正确的决定,但还没有完成(阅读:可能的错误)。从下划线符号修改为headlessCamelCase的决定是一个遗留问题(和一个错误的IMO)。他们已经停止了'set()'方法本身的修改,但他们可能没有找到所有的涟漪。看看这篇文章(http://archive.robwilkerson.org/2008/12/28/cakephp-watch-out-for-the-compact-function/index.html)和Nate Abele(前开发主管)的评论。如果这真的发生在1中,则为 – 2010-11-17 12:28:58

+0

。3我会在灯塔上贴一张票。自从它是beta版本以来,我一直在使用1.3,并且从来没有遇到过这个问题 – dogmatic69 2010-11-22 00:00:36

1

这是一个小哈克,但我认为它会工作:

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

这将工作,我猜,但正确的解决方案是另一种。 – Daniel 2010-11-17 12:00:10

1

这是你真正应该做的(特别是版本2.x) - 以防万一某些人面临同样的问题。

[您constroller行动中]

$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');