2016-02-24 4 views
3

Я использую symfony2, мне интересно, можно ли его переименовать в форме.Есть ли способ переименовать поле в форме в Symfony2?

Я имею в виду ... Предположим, у меня есть сущность

class MyEntity{ 
    private $name 
    //more code 
} 

И я создать тип этого объекта:

class MyEntityType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('name') 
     ; 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'AppBundle\Entity\MyEntity' 
     )); 
    } 

    public function getName() 
    { 
     return 'entity'; 
    } 
} 

Есть ли способ, чтобы переименовать поле name в форме, но Работает атрибут name. что-то вроде:

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('MySuperName', null, array("mapping" => "name")) 
      ; 
    } 

Так имя формы паров становится entity[MySuperName] вместо entity[name] но заполняет name собственности на лице?

+0

зачем вам MySuperName? Только для отображения? вы можете использовать для этого атрибут 'label'. – craigh

+0

Nop ... Я перепрограммирую API, но я не хочу менять клиентов, и я хочу назвать вещи такими, какие мне нравятся. В этом случае 'MySuperName' - это то, что клиент отправляет ... и' name' - это имя, которое я хочу. – Pipe

ответ

10

Использование property_path:

$builder 
    ->add('MySuperName', null, array('property_path' => 'name')) 

Другим вариантом было бы добавить получить/установить псевдонимы для вашего name поля:

public function getMySuperName() 
{ 
    return $this->name; 
} 

public function setMySuperName($mySuperName) 
{ 
    $this->name = $mySuperName; 

    return $this; 
} 
Смежные вопросы