Php Symfony表单:setWidgets中{';model';=>;$this->;getRelatedModelName(';model';)}和{';model';=>;>;model';}之间的差异

Php Symfony表单:setWidgets中{';model';=>;$this->;getRelatedModelName(';model';)}和{';model';=>;>;model';}之间的差异,php,forms,symfony1,symfony-1.4,doctrine-1.2,Php,Forms,Symfony1,Symfony 1.4,Doctrine 1.2,我一直在做SYMFONY jobeet tuto(第10天),有一次在表单部分,我发现有时我们使用: 'category_id' => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('JobeetCategory'), 'add_empty' => false)), 有时我们只是简单地使用 'jobeet_affiliates_list' => new sfW

我一直在做SYMFONY jobeet tuto(第10天),有一次在表单部分,我发现有时我们使用:

'category_id'  => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('JobeetCategory'), 'add_empty' => false)),
有时我们只是简单地使用

'jobeet_affiliates_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'JobeetAffiliate')),
有人能解释为什么吗?它是如何工作的?
为什么有时我们会使用getRelatedModelName??为什么有时候'model'=>'myModel'

几乎是一样的事情,但是,只有当当前表单的模型和小部件中需要的模型之间存在关系时,才能使用
getRelatedModelName
。例如,如果在Article和Category之间定义了一个关系,那么可以在ArticleForm中使用
getRelatedModelName('Category')
(通常定义了一个关系)


在这两种情况下(当关系存在/不存在时),您可以将模型作为字符串写入
'model'=>'JobeetAffiliate'
。我通常都这么做。

谢谢弗拉德!如果我没有弄错的话:我应该说,在这种情况下,JobeetAffiliate必须与DB中的JobeetAffiliate表有一个关系?不,它是关于两个模型之间的关系,而不是一个模型和它的表之间的关系。在第一个示例中,您可能有一个category表/模型和一个jobeet_category表/模型(很可能category表主键是jobeet_category表中的外键)。因此,JobeetCategory与范畴、范畴与JobeetCategory都有关系。这就是为什么您可以
getRelatedModelName
(您也可以在那里编写确切的关系,fx
“Category”
)。