设置默认输入值symfony 3

时间:2018-05-27 21:51:01

标签: javascript php symfony twig

我正在尝试在输入中设置默认值。该值从Controller发送到Twig,如下所示

ClienteController.php

   $loc_default = $em->getRepository('AppBundle:Localidad')->findOneBy(
            array('nombre' => 'aaaa'));
       $localidad_default = $loc_default;

    return $this->render('cliente/new.html.twig', array(
            'localidad_default' => $localidad_default,
            'form' => $form->createView(),
            'form2' => $form2->createView(),
        ));

这是我的带有javascript行的Twig View

  $("#appbundle_cliente_localidad").val({{localidad_default['localidad_default']}});

但它显示以下错误

无法访问未实现ArrayAccess接口的“AppBundle \ Entity \ Localidad”类对象上的“localidad_default”键。

感谢您的回答

2 个答案:

答案 0 :(得分:0)

试试这个:

$loc_default = $em->getRepository('AppBundle:Localidad')->findOneBy(array(
    'nombre' => 'aaaa')
);
$localidad_default = $loc_default->getSomething();

return $this->render('cliente/new.html.twig', array(
     'localidad_default' => $localidad_default,
     'form' => $form->createView(),
     'form2' => $form2->createView(),
));

在模板中:

$("#appbundle_cliente_localidad").val({{ localidad_default }});

将getSomething()更改为Localidad实体的有效公共方法!

或者如果你需要整个实体在你的树枝模板中:

$loc_default = $em->getRepository('AppBundle:Localidad')->findOneBy(array(
    'nombre' => 'aaaa')
);

return $this->render('cliente/new.html.twig', array(
     'localidad_default' => $loc_default,
     'form' => $form->createView(),
     'form2' => $form2->createView(),
));

在模板中:

$("#appbundle_cliente_localidad").val({{ localidad_default.something }});

答案 1 :(得分:0)

在我看来是代码太多,如果控制器发送默认数据来自同一个动作,表单只是设置表格或控制器的值,如下所示:

  

表格内

/**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name',TextType::class,[
            'attr'=>[
                'value' => 'some_default_value'
            ]
        ]);
    }
  

控制器内部

...
$form = $this->createForm('AppBundle\Form\SomeFormType', $data);
$form->get('somefield')->setData('default_data');
...

这种方式对您来说更好,代码和测试更少。此外,如果您需要访问数据库或更容易的东西。

希望它有所帮助!