Symfony'de giriş sayfasından sonra istinat POST parametreleri

5 Cevap php

nasıl ben symfony giriş sayfasından sonra POST verileri korumak yapabilir?

kullanıcı formu doldurarak iken örneğin, çerez dolmuştur. Form kullanıcıya gönderdikten sonra bir giriş sayfasına yönlendirme alır. ve başarılı giriş yaptıktan sonra o ilk şeklinde herhangi POST veri olmadan geri formun "eylem" url bir yönlendirme olur.

bu verileri işlemek için symfony herhangi bir mekanizma yoktur, ya da ben kendi yazmak zorunda?

btw, ben sfGuardPlugin kullanıyorum

5 Cevap

Bunun için basit bir filtre yazdı. Belki de burada, onun özelliklerini genişletmek ve kullanabilirsiniz

class postFilter extends sfFilter
{
    public function execute($filterChain)
  {
    // Execute this filter only once
    if ($this->isFirstCall())
    {
      // reach user object
      $user    = $this->getContext()->getUser();
      // request
      $request = $this->getContext()->getRequest();
      // if user unauthenticated and if user posted a form 
      if(!$user->isAuthenticated() AND $request->isMethod('post'))
      {
        // now you can save the post parameters
        $user->setAttribute('param_name', $request->getParameter('post_data'));
        // or something like that 
      }
    }

    // Execute next filter
    $filterChain->execute();
  }
}

Ve filters.yml için bir filtre eklemek

post_filter:
  class: postFilter

Umarım işe yarar.

Ben bu-> ileri () Bir $ yapıyor aslında tüm sonrası verilerin birlikte gönderir olduğuna neredeyse eminim.

Bunu gibi symfony içinde yönlendirmek için ekstra parametreler verebilir:

$this->redirect('module/action?var='.$request->getParameter('id'));
$this->redirect('module/action?var=2');

Tabii, bu gibi şifreleri göndermek çok akıllı değildir.

Bir kullanıcı oturumu bir seçenek olabilir ama yeni bir eylem yönlendirilmeden önce her şeyi yapmak için deneyebilirsiniz

Ben Flaş Özelliğin, bu iyi bir uzlaşma olacağını düşünüyorum. Çalışacak bir oturumda farklı, değerler sadece sonraki sayfaya saklanır.

http://www.symfony-project.org/book/1%5F2/06-Inside-the-Controller-Layer#Flash%20Attributes

foreach($_POST as $key => $value){
    $this->getUser()->setFlash($key, $value);
}

Flaş özellikler otomatik olarak bir sonraki istek sonra silinecektir.

Sen $ _SESSION saklamak gerekir. ) Eğer (session_start denilen emin olun, o zaman böyle bir şey yapabilirsiniz:

foreach($_POST as $key => $value){
   $_SESSION[$key] = $value;
}

ya da, sadece oturumda bir alt dizi olarak saklayın.

$_SESSION['previousPost'] = $_POST;

Ben 't Sympony çerçeve ile herhangi expierience var, ama bu işi halletmek olacak.