2010-02-08 23 views
0

我在管理生成器中遇到問題。頁表列有sf_guard_user_id列。該表的其餘部分看起來在行顯示的generator.yml的這一部分,檢索Symfony Admin Generator中的相關數據

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時被替換以及用戶名IST顯示。不要誤解我的意思,這很好。但是我怎樣才能從sfGuarsUser關係中獲得其他變量?當我只加鹽或其他變量來顯示我得到這個,

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

但是爲什麼?

回答

3

因爲sfGuardUser類的_toString()返回用戶名,所以顯示用戶的名稱。我猜想從simplePagesfGuardUser的相關名稱是sfGuardUser

但是,當您只指定salt時,發電機會查找simplePages是否具有這樣的屬性。管理生成器不知道你的意思是salt字段sfGuardUser(應該怎麼做?)。


您可以使用partial fields顯示該值。因此,你必須指定該字段與在前面(_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()方法,但我想你知道如何從你的頁面模型訪問相關的用戶。

0

管理生成器無法使用默認配置鑽研相關對象屬性。

您的sfGuardUser字段正確顯示的原因是因爲Doctrine在您的'page'類中定義了一個getSfGuardUser方法,當它告訴兩個對象相關並且管理生成器調用該函數以顯示其列(技術上調用方法返回的結果'sfGuardUser'對象上的__toString()方法)。

爲了讓您的對象的相關車型之一的屬性,你可以在你的頁面對象定義自定義的getter:

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

,然後引用您的發電機。陽明:

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

或創建一個部分來處理您的自定義渲染:

模塊/頁/模板/ _sfGuardUser.php:

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

,然後將其包含在你的generator.yml前面的下劃線:

display: [title, _sfGuardUser, views, ...]