表单 – Symfony2实体字段类型替代“属性”或“__toString()”?

前端之家收集整理的这篇文章主要介绍了表单 – Symfony2实体字段类型替代“属性”或“__toString()”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Symfony2 entity field type应该指定属性选项:
$builder->add('customers','entity',array(
    'multiple' => true,'class'    => 'AcmeHelloBundle:Customer','property' => 'first',));

但有时这还不够:考虑两个同名的客户,所以显示电子邮件(唯一)将是强制性的。

另一种可能性是在模型中实现__toString():

class Customer
{
    public $first,$last,$email;

    public function __toString()
    {
        return sprintf('%s %s (%s)',$this->first,$this->last,$this->email);
    }
}

后者的不利之处在于,您被迫以所有形式的方式显示实体。

有什么其他方法可以使这个更灵活吗?我的意思是回调函数

$builder->add('customers','property' => function($data) {
         return sprintf('%s %s (%s)',$data->first,$data->last,$data->email);
     },));

解决方法

我发现这真的很有帮助,我用一个很简单的方法解决你的代码,所以这里是解决方
$builder->add('customers',array(
'multiple' => true,'property' => 'label',));

而在班级客户(实体)

public function getLabel()
{
    return $this->lastname .','. $this->firstname .' ('. $this->email .')';
}

eh voila:D属性从实体获取其字符串而不是数据库

猜你在找的HTML相关文章