1

我正在将代码从 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`);

现在,我在我的项目中创建了管理模块 - cms在以下代码中:

php symfony propel:generate-admin cms --module=myModel MyModelTable

在我的页面中,我可以看到表mymodel_table的信息,这是:both 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页面中没有找到这个案例的好例子!尝试了 1.0 版本的许多排列。改变事物,在config.yml添加外部命令。

我将不胜感激任何帮助。

编辑

正如我被建议的那样,我正在做部分。我创建了一个_Label_list.php。将信息从外键重定向到命运表。在文件中,我正在做类似的事情:

 $rights = RightsOwnerQuery::create()->findPk($MyModel->getFkRightsOwnerId());

 //Print the Info
 echo $rights->getPrice() . ' ('. $rights->getId() . ')';
4

1 回答 1

1

symfony 1.0 中的旧list > filters版本已移至filtersymfony 1.4 中的专用条目。

您现在必须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 中)。

编辑: 关于部分,您必须在管理模块的模板目录中创建它们:

modules
  |- rightsownerinlabel
    |- actions
    |- config
      |- generator.yml
    |- lib
    |- templates
      |- _label_filter.php
      |- _rightsowner_filter.php

我不经常使用过滤器,但深入研究缓存文件夹中生成的代码以查看如何检索 FormFilter 对象并确实想要使用

于 2012-04-11T16:28:30.897 回答