0

Admin Generator に問題があります。ページの表には列がありますsf_guard_user_id。テーブルの残りの部分はgenerator.yml、インライン表示のこの部分のように見えます。

list:
  title: Pages
  display:      [=title, sfGuardUser, views, state, privacy, created_at, updated_at]
  sort:         [created_at, desc]
  fields:
    sfGuardUser: { label: Author }
    created_at:  { label: Published, date_format: dd.MM.y }
    updated_at:  { label: Updated, date_format: dd.MM.y }
  table_method: retrieveUserList

sf_guard_user_idが置き換えられ、ユーザー名が表示されます。誤解しないでください、それはうまくいきます。sfGuarsUserしかし、関係から他の変数を取得するにはどうすればよいでしょうか? 表示するためにソルトまたは別の変数のみを追加すると、これが得られます。

Unknown record property / related component "salt" on "simplePage"

しかし、なぜ?

4

2 に答える 2

3

_toString()クラスのがユーザー名をsfGuardUser返すため、ユーザーの名前が表示されます。simplePageからまでの関連する名前sfGuardUserはだと思いsfGuardUserます。

ただし、 のみを指定するsaltと、ジェネレーターsimplePagesはそのようなプロパティがあるかどうかを調べます。admin ジェネレーターは、 (どのようにすべきか?)のsaltフィールドを意味していることを知りません。sfGuardUser


部分フィールドを使用してその値を表示できます。したがって、フィールドの前にアンダースコア( _salt) を付けて指定する必要があります。例:

display:      [=title, sfGuardUser, _salt, views, state, privacy, created_at, updated_at]

の出力は、ファイル_saltによって決まります。 modules/<your_module_name_here>/templates/_salt.php

このファイルでは、モデル クラスの名前 (またはあなたの場合) で名前が付けられた変数を介して、現在のオブジェクトにアクセスできます。$simple_page$simplePage

したがって、次のコードを に入れることができます_salt.php:

<?php echo $simple_page->getGuardUser()->getSalt(); ?>

メソッドについてはgetGuardUser()よくわかりませんが、ページ モデルから関連付けられたユーザーにアクセスする方法を知っていると思います。

于 2010-02-08T22:11:49.947 に答える
0

admin ジェネレーターは、既定の構成では、関連するオブジェクト プロパティを詳しく調べることができません。

sfGuardUser フィールドが正しく表示されている理由は、DoctrinegetSfGuardUserが 2 つのオブジェクトが関連していると伝えられたときに「ページ」クラスでメソッドを定義し、admin ジェネレーターがその関数を呼び出してその列を表示したためです (技術的には __toString() メソッドを呼び出す)メソッドによって返される結果の「sfGuardUser」オブジェクト)。

オブジェクトの関連モデルのいずれかのプロパティを取得するには、ページ オブジェクトでカスタム ゲッターを定義します。

public function getSfGuardUserSalt() {
  return $this['sfGuardUser']['salt'];
}

そして、generator.yml でそれを参照します。

display: [title, sfGuardUser, sfGuardUserSalt, ...]

または、カスタム レンダリングを処理するパーシャルを作成します。

モジュール/ページ/テンプレート/_sfGuardUser.php:

<?php echo $page['sfGuardUser']['name']; ?><br />
<?php echo $page['sfGuardUser']['salt']; ?>

次に、前にアンダースコアを付けて generator.yml に含めます。

display: [title, _sfGuardUser, views, ...]
于 2010-02-08T22:12:13.863 に答える