2016-12-01 93 views
-1

我在這裏列出了這個代碼,它列出了來自一個用戶的所有項目,用戶和項目是兩個不同的模型,並且它們與主鍵有關係。Undefined variable in view laravel

@foreach($user->items as $item) 
    <p class="heading"> 
     <a href="">{{ $item->item_id }}</a> 
    </p> 
@endforeach 

我的問題是如何發送item_id與POST請求到控制器,因爲當我寫這樣的例子<form class="form-horizontal" method="post" action="{{ route('preview', $item->item_id) }}" role="form" enctype="multipart/form-data">它帶給我的是$項變量沒有定義。

我的控制器:

public function preview($item_id){ 

     return view('itempreview')->with('item_id', $item_id); 
    } 

任何想法如何發送item_id

+0

直到你的'foreach'循環中'$ item'變量才被定義,所以你應該把表單放在那個循環中。 – user3158900

+0

那麼有沒有辦法發送item_id? – Devmasta

回答

0

您需要發送$item_id作爲POST的一部分:

@foreach($items as $item) 
    <form method="post" action="{{ route('preview') }}"> 
     <input type="hidden" name="item_id" value="{{ $item->item_id }}"> 
    </form> 
@endforeach 

然後在接收POST方法:

public function index() { 

    $item_id = request()->input('item_id'); 

    return view('preview'); 
} 
+0

我有控制器的功能,但它給了我這一行錯誤'

item_id)}}」角色=「形式」enctype =「多部分/形式數據」>'這個變量沒有定義 – Devmasta

+0

你不明白我的問題,我不需要顯示所有項目,我列出來自一個用戶的項目,但我需要該user_id發送到另一個控制器 – Devmasta

+0

是'$ item' laravel模型?應該是'$ item-> id'而不是... – darronz

0

您應該使用數組作爲第二個參數去route()方法!

你做錯了,你應該把它像這樣:

route('preview', ['item_id' => $item->item_id]); 

確保,你的路線應該被定義爲這樣:

Route::post('preview/{item_id}', '[email protected]')->name('preview'); 

希望這有助於!

+0

它再次給我同樣的錯誤..沒有定義的東西 – Devmasta

+0

你在控制器裏面做什麼,你能告訴我代碼嗎? –

+0

我正在更新我的答案! –