2017-11-02 16 views
0

数日前、私はララケストでlaravelを学び始めましたが、私は小さな問題があります。Laravel nullコントローラー内のPOSTデータ

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); 
    } 
} 

私のルートでは、私はPOSTメソッドを使用して@storeトリガよリクエスト:

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

私は値がありません。なぜここにデータが見えないのか教えてください。

+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

多くの感謝の仲間!今分かります! :) – VividDreams

関連する問題