我将代码从Symfony1.0迁移到Symfony 1.4。 使用 Propel 创建了一个名为: mymodel 的管理模块。
该模型的数据库是这样的:
table: mymodel_table.
column: fkLabelId
column: fkRightsOwnerId
NOTE: both are foreing keys.
它们以这种方式连接 - 在物理数据库中连接 - :
fkLabelId -------> REFER `DB/label`(`id`);
fkRightsOwnerId -------> REFER `DB/ownersright`(`id`);
现在,我在我的项目中创建了admin-module - cms ,代码如下:
php symfony propel:generate-admin cms --module=myModel MyModelTable
在我的页面中,我可以看到表格 mymodel_table 的信息,这是: id 。但我希望看到其他两个表中引用的信息。
这是SYMFONY 1.0版本的config.yml :
generator:
class: sfPropelAdminGenerator
param:
model_class: MyModel
theme: default
fields:
fk_label_id: {params: disabled=false}
fk_rightsowner_id: {params: disabled=false}
list:
filters: [fklabelid, _label_filter, fkrightsownerid, _rightsowner_filter]
peer_method: doSelectJoinAll
display: [=_label_list, =_rightsowner_list]
actions:
actions:
_create: ~
object_actions:
_edit: ~
_delete: ~
edit:
display: [=_label_edit, =_rightsowner_edit]
actions:
_list: ~
_save_and_list: ~
_save: ~
_delete: ~
这是SYMFONY 1.4版本的config.yml :
generator:
class: sfPropelGenerator
param:
model_class: MyModel
theme: admin15
non_verbose_templates: true
with_show: false
singular: MyModel
plural: MyModel
route_prefix: My_model
with_propel_route: 1
actions_base_class: sfActions
config:
actions: ~
fields:
fk_label_id: {params: disabled=false}
fk_rightsowner_id: {params: disabled=false}
list:
filters: [fklabelid, _label_filter, fkrightsownerid, _rightsowner_filter]
// peer_method: doSelectJoinAll ("commented")
// display: [=_label_list, =_rightsowner_list] ("commented")
filter: ~
form: ~
edit: ~
new: ~
在mypage.com/dev.php/mymodel
我得到:
500 | Internal Server Error | InvalidArgumentException
Your generator configuration contains some errors for the "list" context. The following configuration cannot be parsed: array( 'filters' => array( 0 => 'fklabelid', 1 => '_label_filter', 2 => 'fkrightsownerid', 3 => '_rightsowner_filter', ),).
在 Symfony 页面did not find这个案例的好例子!尝试了1.0版本的许多排列。更改内容,在 config.yml 中添加外部命令。
我将不胜感激任何帮助。
修改:
正如我所建议的那样,我正在做部分事。我创建了一个 _Label_list.php 。将信息从外键重定向到命运表。在文件中,我做了类似的事情:
$rights = RightsOwnerQuery::create()->findPk($MyModel->getFkRightsOwnerId());
//Print the Info
echo $rights->getPrice() . ' ('. $rights->getId() . ')';
答案 0 :(得分:2)
symfony 1.0中的旧list > filters
已移至symfony 1.4中的专用条目filter
。
您现在必须在filter
的同一级别使用list
。
config:
actions: ~
fields:
fk_label_id: {params: disabled=false}
fk_rightsowner_id: {params: disabled=false}
list:
// peer_method: doSelectJoinAll ("commented")
// display: [=_label_list, =_rightsowner_list] ("commented")
filter:
display: [fklabelid, _label_filter, fkrightsownerid, _rightsowner_filter]
form: ~
edit: ~
new: ~
顺便说一下,小心,以“_”开头的字段是偏的。所以不要忘记创建部分(我猜它们已经存在于symfony 1.0中)。
修改强> 关于partial,您必须在admin模块的templates目录中创建它们:
modules
|- rightsownerinlabel
|- actions
|- config
|- generator.yml
|- lib
|- templates
|- _label_filter.php
|- _rightsowner_filter.php
我并不经常考虑使用过滤器,而是深入研究缓存文件夹中生成的代码,看看如何检索FormFilter对象并确实希望得到