Symfony 3 Изменение метки отправки из класса формы внутри контроллера

Итак, у меня есть форма, созданная в своем собственном классе:

<?php
// src/AppBundle/Form/Type/CoffeeShopForm.php
namespace AppBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
...

class CoffeeShopType extends AbstractType
{
   public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class)
        ...
        ->add('save', SubmitType::class, array('label' => 'Create a coffee shop'))
        ->getForm();
    ;
}

}

И затем я использую его в одном контроллере

/**
 * @Route("/admin/edit/{coffee_shop_id}")
 */
public function editCoffeeShopAction(Request $request, $coffee_shop_id)
{

    $repository = $this->getDoctrine()->getRepository('AppBundle:CoffeeShop');

    $coffeeshop = $repository->find($coffee_shop_id);

    $form = $this->createForm(CoffeeShopType::class, $coffeeshop);

    $form->get('name')->setData('New name value');

    $form->handleRequest($request);

    return $this->render('AppBundle:CoffeeController:edit_coffee_shop.html.twig', array(
        'form' => $form->createView(),
    ));
}

Итак, в контроллере, как вы можете видеть, я могу изменить значение поля имени с помощью $form->get('name')->setData('New name value'); Мой вопрос в том, как я могу изменить метку поля SubmitType - я искал документацию по этой вещи, но не могу ее найти, и было бы очень полезно, если бы я мог повторно использовать эту форму, поскольку я использую ее для формы добавления а затем для формы редактирования, и в принципе это возможно в Zend Framework, поэтому я думаю, что это должно быть возможно и в Symfony.


person Nikolay    schedule 25.04.2016    source источник
comment
symfony.com/doc/current/cookbook/form/   -  person Vadim Ashikhman    schedule 25.04.2016
comment
большое спасибо за ответ! Я на самом деле нашел это раньше. Мой вопрос больше: нельзя ли сделать что-то похожее на $form->get('name')->setData() . Что-то вроде установки метки, или если есть специальная структура аргумента в setData() для метки отправки   -  person Nikolay    schedule 25.04.2016
comment
Подходы, которые вы можете использовать, приведены в ответе на этот вопрос: stackoverflow.com/questions/22893735/   -  person Richard    schedule 26.04.2016


Ответы (1)


Я наткнулся на тот же вопрос, и после обширной отладки я могу с некоторой уверенностью сказать, что то, что вы хотите сделать, невозможно, по крайней мере, в Symfony 2.8.

Однако вы можете установить другую метку при отображении формы:

{{ form_row(form.name, { 'label': 'Test 123'}) }}

См. http://symfony.com/doc/current/reference/forms/types/text.html#label для получения подробной информации.

person MaximeW    schedule 28.06.2017
comment
Я думаю, что проще, быстрее и удобнее делать это в Twig вот так. Спасибо, что поделился. - person crmpicco; 14.02.2019