programing

symfony2에서 요청 매개 변수를 얻는 방법

new-time 2020. 5. 10. 12:33
반응형

symfony2에서 요청 매개 변수를 얻는 방법


나는 심포니를 처음 접했습니다. 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');

귀하의 옵션 :

  1. 단순한:
    • $request->request->get('param')( $_POST['param']) 또는
    • $request->query->get('param')( $_GET['param'])
  2. 모든 유효성 검사, 가치 변환 및 오류 및 기타 여러 기능이 포함 된 양식 렌더링이 포함 된 우수한 Symfony 양식 :
  3. 사이에있는 것 (아래 예 참조)

<?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,
    ]);
}

추가 정보 -http

OptionsResolver

:

//symfony.com/doc/current/components/options_resolver.html


이제

$this->getRequest()

메소드가 더 이상 사용되지 않으므로 다음

Request

과 같이 컨트롤러 작업에 객체 를 주입해야합니다 .

public function someAction(Request $request)

그 후 다음 중 하나를 사용할 수 있습니다.

If you want to fetch POST data from request use following:

$request->request->get('var_name');

but if you want to fetch GET data from request use this:

$request->query->get('var_name');

You can do it this:

$clientName = $request->request->get('appbundle_client')['clientName'];

Sometimes, when the attributes are protected, you can not have access to get the value for the common method of access:

(POST)

 $clientName = $request->request->get('clientName');

(GET)

$clientName = $request->query->get('clientName');

(GENERIC)

$clientName = $request->get('clientName');

Most of the cases like getting query string or form parameters are covered in answers above.

When working with raw data, like a raw JSON string in the body that you would like to give as an argument to json_decode(), the method Request::getContent() can be used.

$content = $request->getContent();

Additional useful informations on HTTP requests in Symfony can be found on the HttpFoundation package's documentation.


$request = Request::createFromGlobals();
$getParameter = $request->get('getParameter');

use Symfony\Component\HttpFoundation\Request;

public function indexAction(Request $request, $id) {

    $post = $request->request->all();

    $request->request->get('username');

}

Thanks , you can also use above code


If you need getting the value from a select, you can use:

$form->get('nameSelect')->getClientData();

Try this, it works

$this->request = $this->container->get('request_stack')->getCurrentRequest();

Regards


public function indexAction(Request $request)
{
   $data = $request->get('corresponding_arg');
   // this also works
   $data1 = $request->query->get('corresponding_arg1');
}

For symfony 4 users:

$query = $request->query->get('query');

참고URL : https://stackoverflow.com/questions/9784930/how-to-get-the-request-parameters-in-symfony2

반응형