나는 심포니를 처음 접했습니다. java 및 다른 언어와 같은 다른 언어에서는 request.getParameter('parmeter name')
값을 얻는 데 사용할 수 있습니다 .
symfony2로 할 수있는 것과 비슷한 것이 있습니까?
나는 몇 가지 예를 보았지만 나를 위해 아무것도 효과가 없다. username 이라는 이름 의 양식 필드가 있다고 가정하십시오 . 양식 작업에서 다음과 같은 것을 사용하려고했습니다.
$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;
}
그러면 routing.yml 파일에서 {foo} 및 {bar}를 URL 패턴의 일부로 정의했다고 가정합니다.
acme_myurl:
pattern: /acme/news/{foo}/{bar}
defaults: { _controller: AcmeBundle:Default:getnews }
답변
다음 코드를 사용하여 양식 필드 값을 얻을 수 있습니다.
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->request->get('acme_demobundle_usertype')['username']
공식 필드의 속성 이름을 검사하십시오.
답변
컨트롤러 내부 :
$request = $this->getRequest();
$username = $request->get('username');
답변
귀하의 옵션 :
- 단순한:
$request->request->get('param')
($_POST['param']
) 또는$request->query->get('param')
($_GET['param']
)
- 모든 유효성 검사, 가치 변환 및 오류 및 기타 여러 기능이 포함 된 양식 렌더링이 포함 된 우수한 Symfony 양식 :
- 사이에있는 것 (아래 예 참조)
<?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,
]);
}
추가 정보 -httpOptionsResolver
: //symfony.com/doc/current/components/options_resolver.html
답변
이제 $this->getRequest()
메소드가 더 이상 사용되지 않으므로 다음 Request
과 같이 컨트롤러 작업에 객체 를 주입해야합니다 .
public function someAction(Request $request)
그 후 다음 중 하나를 사용할 수 있습니다.
요청에서 POST 데이터를 가져 오려면 다음을 사용하십시오.
$request->request->get('var_name');
그러나 요청에서 GET 데이터를 가져 오려면 다음을 사용하십시오.
$request->query->get('var_name');