В контроллерах symfony 2 каждый раз, когда я хочу получить значение из сообщения, мне нужно запустить:
$this->getRequest()->get('value1');
$this->getRequest()->get('value2');
Есть ли способ объединить их в один оператор, который возвращает массив? Что-то вроде Zend getParams()?
Вы можете сделать $this->getRequest()->query->all();
, чтобы получить все параметры GET и $this->getRequest()->request->all();
, чтобы получить все параметры POST.
Итак, в вашем случае:
$params = $this->getRequest()->request->all();
$params['value1'];
$params['value2'];
Дополнительные сведения о классе Request см. в http://api.symfony.com/2.8/Symfony/Component/HttpFoundation/Request.html
В последних версиях Symfony 2.6+ в качестве наилучшей практики запрос передается как аргумент с действием в этом случае вам не нужно явно вызывать $this- > getRequest(), а скорее вызывать $request- > request- > все()
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());
}
}
$request->attributes->all()
. Я использовал$request->get()
думая, что это единственный способ получить эти данные, и пришел сюда в поисках другого пути.