2017-11-02 11 views
0

며칠 전 나는 larvel을 laracast에서 배우기 시작했고 작은 문제가 있습니다.Laravel null 컨트롤러의 POST 데이터

게시 방법을 사용하여 양식 데이터를 제출하고 컨트롤러에서이 데이터에 액세스하려는 경우 값이 비어 있습니다.

형태 :

<form method="POST" action="{{ url('/costs')}}"> 

{{ csrf_field() }} 

    <div class="form-group"> 
    <label for="cost-title">Cost title</label> 
    <input type="text" class="form-control" id="cost-title" name="title" placeholder="Enter cost title"> 
    </div> 

    <div class="form-group"> 
    <label for="cost-price">Price</label> 
    <input type="text" class="form-control" id="cost-price" name="price" placeholder="Enter price"> 
    </div> 

    <button type="submit" class="btn btn-primary">Submit</button> 
</form> 

컨트롤러 : 나는 덤프 죽을 때

Route::get('/costs', '[email protected]'); 
Route::get('/cost/{cost}', '[email protected]'); 
Route::get('/costs/create', '[email protected]'); 

Route::post('/costs', '[email protected]'); 

그리고 :

<?php 

namespace App\Http\Controllers; 

use App\Cost; 

class CostsController extends Controller 
{ 
    public function index(){ 

     $costs = Cost::all(); 

     return view('costs.index', compact('costs')); 

    } 

    public function show(Cost $cost){ 

     return view('costs.show', compact('cost')); 

    } 

    public function create(Cost $cost){ 

     return view('costs.create'); 

    } 

    public function store(){ 
     dd(request()->all); 
    } 
} 

내 노선에서 나는 포스트 방법을 사용하여 @store 트리거하고 있습니다 요청 :

public function store(){ 
     dd(request()->all); 
    } 

값이 null입니다. 왜 내가 여기에 어떤 데이터도 볼 수없는 이유를 설명해 주시겠습니까?

+2

{public function store (Request $ request) { dd ($ request-> all()); }' – Maraboc

+0

@Maraboc, 시도했지만 다음과 같은 오류가 있습니다 : "App \ Http \ Controllers \ Request 클래스가 존재하지 않습니다." – VividDreams

+0

컨트롤러 상단에 'Use Illuminate \ Http \ Request;'를 추가하십시오;) – Maraboc

답변

1

상점 방법을 업데이트하고이 같은 요청 매개 변수를 전달 :

업데이트
public function store (Request $request) 
{ 
$input = $request->all(); 
dd($input); 
} 

:

The Illuminate\Http\Request 

인스턴스가 응용 프로그램에 대한 HTTP 요청을 조사하기위한 다양한 방법을 제공하고

를 확장
Symfony\Component\HttpFoundation\Request 

컨트롤러 메소드도 필요하면 g 매개 변수를 다른 매개 변수 뒤에 나열해야합니다. 예를 들어, 경로과 같이 정의 된 경우 : 당신은 여전히를 분명히 \ HTTP를 \ 요청을 입력-힌트 및 컨트롤러 방법을 정의하여 경로 매개 변수 ID를 액세스 할 수

Route::put('user/{id}', '[email protected]'); 

다음과 같이

public function update(Request $request, $id) 
{ 
    // 
} 

양식 매개 변수를 가져 오는 간단한 단어로 컨트롤러에 변수 ($ request)를 전달하여 액세스 할 수 있도록해야합니다. (laravel이 $ request 변수에 이러한 양식 매개 변수를 저장한다고 말하면서 쉽게 전달할 수 있습니다 그것은 컨트롤러에 또는 아닙니다). 희망 사항을 정리하십시오.

+0

고마워요! 이제 작동합니다! 그러나 나는 그 차이점을 이해하지 못한다. 요청 매개 변수를 별도의 변수에 저장하는 것이 왜 작동 하는지를 설명 할 수 있습니까? 이전의 방법은 작동하지 않습니다. – VividDreams

+0

답변 됨 업데이트 됨 : –

+0

많은 thanks mate! 지금은 이해! :) – VividDreams