2014-01-03 3 views
1

Я новичок в symfony и не знаю, как использовать переменную одного действия в другом. Может кто-нибудь дать мне детальный раствор? в первом действии я извлекаю выбранные значения формы в переменной $ manifestations.symfony2 pass form getdata для другого действия

форма

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; 
} 

index.html.twig файл

{% block body %} 
//.... 
<div id="resultats_affiches"> 
    {% include 'ProtoBundle:Invite:results.html.twig' with 
     { 'entities' : entities, 
      'manifestations' : manifestations, 
     } 
    %} 
</div> 
//.... 
{% endblock %} 

Я хочу использовать это $ проявления переменной в другом действии, что экспорт полученных данных в файле csv:

/** 
* @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; 
} 

затем быть в состоянии нажать на ссылку, которая перенаправляет к этому 2 действия, чтобы экспорт файла

results.html.twig файл

<a href="{{ path('invite_export', { 'manifestations': manifestations }) }}"><img height="40px" width="40px" src={{ asset('bundles/images/imprimante-icone-8350-96.png') }} ></a> 

спасибо за вашу помощь!

ответ

0

Для этого необходимо указать переменную $manifestations на ваш контроллер exportCsvAction(). Вы можете сделать это, передав его в функцию шаблона path(). В акции, которая делает шаблон, который производит ссылку предоставленную вами, передать в данных проявлениях и сделать что-то вроде следующего:

<a href="{{ path('invite_export', { 'id': manifestation.id }) }}"><img height="40px" width="40px" src={{ asset('bundles/images/imprimante-icone-8350-96.png') }} ></a> 
+0

Здравствуйте, спасибо за ответ, я изменил первое действие для передачи данных в файле twig, вы можете увидеть его сверху. и добавил этот путь в файл index.html.twig: ... мой вопрос заключается в том, как второе действие будет определять этот путь, я должен добавить его на свой маршрут, например, export/{манифестация} или где-то еще: exportCsvAction ($ manifestations)? можете ли вы просветить меня по этому вопросу? – Albee

+0

Да. Добавьте его в маршрут и действие, как описано. Это похоже на любой другой маршрут с параметрами. – Johnny

0

я подтвердить @johnny ответ, другое решение с помощью сеанса запасти ваш переменная, но это нехорошее решение.

Смежные вопросы