Я очень новичок в symfony. В других языках, таких как java и другие, я могу использовать request.getParameter('parmeter name')
чтобы получить значение.
Есть ли что-то подобное, что мы можем сделать с symfony2.
Я видел несколько примеров, но никто не работает для меня. Предположим, у меня есть поле формы с именем пользователя . В форме action я попытался использовать что-то вроде этого:
$request = $this->getRequest(); $username= $request->request->get('username');
Я также пробовал
$username = $request->getParameter('username');
а также
$username=$request->request->getParameter('username');
Но ни один из вариантов не работает. Однако после этого все работает нормально:
foreach($request->request->all() as $req){ print_r($req['username']); }
Где я ошибаюсь при использовании getParameter()
. Любая помощь будет оценена.
Именование не все настолько интуитивно понятное:
use Symfony\Component\HttpFoundation\Request; public function updateAction(Request $request) { // $_GET parameters $request->query->get('name'); // $_POST parameters $request->request->get('name');
Я делаю это еще проще:
use Symfony\Component\HttpFoundation\Request; public function updateAction(Request $request) { $foo = $request->get('foo'); $bar = $request->get('bar'); }
Другой вариант – ввести ваши параметры в определение функции действия:
use Symfony\Component\HttpFoundation\Request; public function updateAction(Request $request, $foo, $bar) { echo $foo; echo $bar; }
который затем предполагает, что вы определили {foo} и {bar} как часть вашего шаблона URL в файле routing.yml:
acme_myurl: pattern: /acme/news/{foo}/{bar} defaults: { _controller: AcmeBundle:Default:getnews }
пытаться
$request->request->get('acme_demobundle_usertype')['username']
проверять имя атрибута вашего форматированного поля
Вы можете использовать следующий код для получения значений поля формы
use Symfony\Component\HttpFoundation\Request; public function updateAction(Request $request) { // retrieve GET and POST variables respectively $request->query->get('foo'); $request->request->get('bar', 'default value if bar does not exist'); }
Или вы также можете получить все значения формы в виде массива, используя
$request->request->all()
Внутри контроллера:
$request = $this->getRequest(); $username = $request->get('username');
Поскольку теперь метод $this->getRequest()
устарел, вам нужно $this->getRequest()
объект Request
в действие вашего контроллера следующим образом:
public function someAction(Request $request)
после этого вы можете использовать одно из следующих.
Если вы хотите получить данные POST из запроса, используйте следующую команду:
$request->request->get('var_name');
но если вы хотите получить данные GET из запроса, используйте это:
$request->query->get('var_name');
Ваши варианты:
$request->request->get('param')
( $_POST['param']
) или $request->query->get('param')
( $_GET['param']
) <?php /** * @Route("/customers", name="customers") * * @param Request $request * @return Response */ public function index(Request $request) { $optionsResolver = new OptionsResolver(); $optionsResolver->setDefaults([ 'email' => '', 'phone' => '', ]); $filter = $optionsResolver->resolve($request->query->all()); /** @var CustomerRepository $customerRepository */ $customerRepository = $this->getDoctrine()->getRepository('AppBundle:Customer'); /** @var Customer[] $customers */ $customers = $customerRepository->findFilteredCustomers($filter); return $this->render(':customers:index.html.twig', [ 'customers' => $customers, 'filter' => $filter, ]); }
Подробнее о OptionsResolver
– http://symfony.com/doc/current/components/options_resolver.html
Вы можете сделать это так:
$clientName = $request->request->get('appbundle_client')['clientName'];
Иногда, когда атрибуты защищены, у вас не может быть доступа для получения значения для общего метода доступа:
(ПОСЛЕ)
$clientName = $request->request->get('clientName');
(ПОЛУЧИТЬ)
$clientName = $request->query->get('clientName');
(Generic)
$clientName = $request->get('clientName');
$request = Request::createFromGlobals(); $getParameter = $request->get('getParameter');
Большинство случаев рассматриваются в ответах выше.
В случае отправки данных строки (например, обработка строки JSON, отправленной в приложение удаленной службой с использованием метода HTTP POST.), GetContent () может использоваться:
$content = $request->getContent();
Дополнительную полезную информацию о http-запросах в Symfony можно найти по адресу: https://symfony.com/doc/2.8/components/http_foundation.html.
Если вам нужно получить значение из select, вы можете использовать:
$form->get('nameSelect')->getClientData();
Попробуйте это, он работает
$this->request = $this->container->get('request_stack')->getCurrentRequest();
С уважением
public function indexAction(Request $request) { $data = $request->get('corresponding_arg'); // this also works $data1 = $request->query->get('corresponding_arg1'); }