sfWidgetFormDoctrineChoice中的自定义值

eli*_*lon 1 php forms doctrine symfony1 widget

我有一个名称姓氏列的用户模型.我正在尝试使用表单创建一个选择器,默认情况下只显示名称值.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)
));
Run Code Online (Sandbox Code Playgroud)

谢谢!

Bla*_*lan 9

使用该method选项并public functionUser模型中创建所需的任何方法名称.一个例子可能是:

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

然后在你的lib/model/Doctrine/User.class.php文件中

public function getFullName() {
    return "{$this->getName()} {$this->getSurname()}";
}
Run Code Online (Sandbox Code Playgroud)

  • 或者您可以在用户模型中定义__toString方法,然后您根本不必更改小部件. (7认同)