2012-06-27 22 views
55

Trong symfony 2 bộ điều khiển, mỗi khi tôi muốn có được một giá trị từ bài Tôi cần phải chạy:Bắt tất cả các thông số yêu cầu trong Symfony 2

$this->getRequest()->get('value1'); 
$this->getRequest()->get('value2'); 

Có cách nào để củng cố những thành một tuyên bố rằng sẽ quay trở lại một mảng? Một cái gì đó giống như getParams của Zend()?

Trả lời

121

Bạn có thể làm $this->getRequest()->query->all(); để nhận tất cả thông số GET và $this->getRequest()->request->all(); để nhận tất cả thông số POST.

Vì vậy, trong trường hợp của bạn:

$params = $this->getRequest()->request->all(); 
$params['value1']; 
$params['value2']; 

Đối với thông tin thêm về các lớp Yêu cầu, xem http://api.symfony.com/2.8/Symfony/Component/HttpFoundation/Request.html

+7

Để lấy giá trị cho các tham số trong đường dẫn (ví dụ/posts/{ id}) sử dụng '$ request-> attributes-> all() '. Tôi đã sử dụng '$ request-> get()' suy nghĩ đó là cách duy nhất để có được dữ liệu này và đến đây tìm kiếm một cách khác. – Dreen

+1

Bạn vừa lưu rất nhiều loại! : D –

+0

Tính năng này không hoạt động với multipart/form-data. –

6

Với gần đây Symfony 2.6+ phiên bản là Yêu cầu thực hành tốt nhất được thông qua như là một cuộc tranh cãi với hành động trong đó trường hợp bạn sẽ không cần phải gọi $ this-> getRequest(), nhưng thay vào đó gọi $ request-> request-> all()

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; 
use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException; 
use Symfony\Component\HttpFoundation\RedirectResponse; 

    class SampleController extends Controller 
    { 


     public function indexAction(Request $request) { 

      var_dump($request->request->all()); 
     } 

    } 
Các vấn đề liên quan