2011-03-03 40 views
1

我有一個用戶模型列。我試圖用sfWidgetFormDoctrineChoice創建一個選擇器,默認情況下只顯示名稱值。自定義值sfWidgetFormDoctrineChoice

我該如何修改小部件才能顯示姓名和姓?我知道你可以初始化窗口小部件時通過一個查詢選項,但我不能讓它工作:

$this->setWidget('user_id', new sfWidgetFormDoctrineChoice(array(
    'model' => $this->getRelatedModelName('User'), 
    'query' => Doctrine_Query::create()->select('u.name, u.surname')->from('User u'), 
    'add_empty' => false) 
)); 

謝謝!

回答

9

使用method選項並在您的User模型中創建任何方法名稱的public function。一個例子可能是:

$this->setWidget('user_id', new sfWidgetFormDoctrineChoice(array(
    'model' => $this->getRelatedModelName('User'), 
    'method' => 'getFullName', 
    'add_empty' => false) 
)); 

然後在你的lib /模型/教義/ User.class.php文件

public function getFullName() { 
    return "{$this->getName()} {$this->getSurname()}"; 
} 
+0

謝謝!它在沒有'query'選項的情況下運行,實際上 – elitalon 2011-03-03 13:39:10

+7

或者你可以在用戶模型中定義__toString方法,那麼你根本不需要改變這個小部件。 – Dziamid 2011-03-03 14:37:14