我正在尝试在输入中设置默认值。该值从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”键。
感谢您的回答
答案 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');
...
这种方式对您来说更好,代码和测试更少。此外,如果您需要访问数据库或更容易的东西。
希望它有所帮助!