1

コードをSymfony1.0からSymfony1.4に移行しています。Propelを使用してmymodelという管理モジュールを作成しました。

そのモデルのデータベースは次のようになります。

table: mymodel_table.
  column: fkLabelId
  column: fkRightsOwnerId
NOTE: both are foreing keys.

それらはこのように接続されています-再び物理DBで-:

  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です。しかし、他の2つの表で参照されている情報を見たいと思います。

これはSYMFONY1.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:        ~

これはSYMFONY1.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の古いものは、symfony 1.4 でlist > filters専用のエントリに移動されました。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 には既に存在していると思います)。

編集: 部分については、管理モジュールのテンプレート ディレクトリに作成する必要があります。

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

フィルターの部分的なことはあまりしませんが、キャッシュ フォルダーで生成されたコードを掘り下げて、FormFilter オブジェクトを取得する方法を確認し、必要に応じていつでも実行できるようにします。

于 2012-04-11T16:28:30.897 に答える