질문을 삭제하지 말아주세요.!
 
1
0
-1

공부하다가 컨트롤러단에서 request→get(key)로 변수에 저장하는거와 request→input(key)로 

하는거와 차이가 있는건가요? DB파사드 쓸때는 input()을 쓰는데 request에서 특정 key값을 가지고 올떄는

get()을 쓰기에 궁금해서요ㅎㅎ;

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      별 의문없이 혼용해서 썼던 함수를 다시 생각하게 되네요.

      Illuminate\Http\Request 클래스는 Symfony\Component\HttpFoundation\Request 클래스를 상속한 것입니다. get() 함수는 Symfony\Component\HttpFoundation\Request에 정의 되어 있는 것을 호출하는겁니다. input() 함수는 Illuminate\Http\Concerns\InteractWithInput Trait에 정의 되어 있습니다.

      사용자의 입장에서 기본적인 기능은 비슷하지만, 가장 큰 차이점은  Array 형태의 입력값을 처리할 때 입니다.

      input()에서는 Form에 정의 되어 있는 Array Input을 처리할때 아래 처럼 dot(.) 표현을 사용합니다.

      // the values
      $name = $request->input('products.0.name');
      
      $names = $request->input('products.*.name');

      get()을 이용하여 Array Input을  처리할 경우는 일반적인 PHP의 array문법을 사용합니다.

      $products = $request->query->get('products);
      $name = $products[0]['name];
      
      $name = $request->query->get('products[0][name]');
      
      $name = $request->query->get('products')[0]['name']; // >= PHP 5.4

      위 코드는 문서만 보고 작성한 것이라 정확한 코드는 확인 하셔야 합니다.

      하지만 두 함수의 차이를 비교하기에는 충분할 듯합니다.


      참고 자료:

      1. https://symfony.com/doc/current/components/http_foundation.html#accessing-request-data
      2. https://laravel.com/docs/5.4/requests#retrieving-input
        CommentAdd your comment...