我是symfony的新手,并且不知道如何在另一个动作中使用一个动作的变量。 有人可以给我一个详细的解决方案吗? 在第一个操作中,我在$ manifestations变量中检索表单的选定值。
class SearchType extends AbstractType{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('manifestations', 'entity', array(
'class' => 'ProtoBundle:Manifestation',
'multiple' => true,
'required'=>false
));
}
/**
* @return string
*/
public function getName() {
return 'protobundle_manifestations';
}
}
public function indexAction{
//....
$form = $this->createForm(new ManifSearchType(), $entity);
$manifestations = $form['manifestations']->getData();
//....
$response1 = $this->render('ProtoBundle:Invite:index.html.twig', array(
'form' => $form->createView(),
'manifestations' => $manifestations,
return $response1;
}
{% block body %}
//....
<div id="resultats_affiches">
{% include 'ProtoBundle:Invite:results.html.twig' with
{ 'entities' : entities,
'manifestations' : manifestations,
}
%}
</div>
//....
{% endblock %}
我想在另一个导出csv文件中检索到的数据的操作中使用这个$ manifeations变量:
/**
* @Route("/export/{manifestations}", name="invite_export")
*/
public function exportCsvAction($manifestations) {
$invites = $repository->searchInviteByManif($manifestations);
$response = $this->render('ProtoBundle:Invite:export.html.twig', array(
'entities' => $invites));
$response->headers->set('Content-Type', 'text/csv');
$csvfile = $response->headers->set('Content-Disposition', 'attachment; filename="export.csv"');
return $csvfile;
}
然后能够点击重定向到第二个操作的链接,以导出文件
<a href="{{ path('invite_export', { 'manifestations': manifestations }) }}"><img height="40px" width="40px" src={{ asset('bundles/images/imprimante-icone-8350-96.png') }} ></a>
感谢您的帮助!
答案 0 :(得分:0)
您应该向$manifestations
控制器提供exportCsvAction()
变量才能执行此操作。您可以通过将其传递到模板中的path()
twig函数来实现。在呈现生成您提供的链接的模板的操作中,传入表现形式数据并执行以下操作:
<a href="{{ path('invite_export', { 'id': manifestation.id }) }}"><img height="40px" width="40px" src={{ asset('bundles/images/imprimante-icone-8350-96.png') }} ></a>
答案 1 :(得分:0)
我确认响应@johnny,另一个解决方案是使用session来存储你的变量,但这不是一个好的解决方案