![](/img/trans.png)
[英]How to make a laravel view that uses data from a controller but also still allows the controller to output raw JSON?
[英]How to output table data from controller to view?
我處於嘗試理解Laravel的開始階段,無法顯示從控制器傳遞到刀片的“照明收集對象”。
我的print_r輸出“ Illuminate \\ Support \\ Collection對象([items:protected] => Array())1”,我認為這意味着它看到了數組中的一項(當前僅在表中有一條記錄),但是我我打了@else語句,所以我猜它實際上是空的。 我沒有收到任何錯誤,但是盡管$ title輸出很好,但我無法顯示$ products的任何內容。
public function shop(){
$products = DB::table('products')->get();
$data = array(
'title'=>'Shop',
'products' => $products
);
return view('pages.shop')->with($data);
}
@section('content')
<h1>{{$title}}</h1>
{{ print_r($products) }}
@if($products->count())
<ul class="list-group">
@foreach($products as $product)
<li class="list-group-item">{{$product->title}}</li>
@endforeach
</ul>
@else
<p>No products</p>
@endif
@endsection
為什么我的數組為空?
在您的控制器上 :
$title = 'Shop';
$products = DB::table('products')->get();
return view('pages.shop', compact('title', 'products');
在您的刀片上 :
我還建議您將無序列表標記<ul>
放在循環之外,然后使用@forelse
獲得更清晰的代碼,如下所示:
@section('content')
<h1>{{$title}}</h1>
<ul class="list-group">
@forelse($products as $product)
<li class="list-group-item">{{$product->title}}</li>
@empty
<li class="list-group-item">No products</li>
@endforelse
</ul>
@endsection
嘗試這個..........
public function shop()
{
$products = DB::table('products')->get();
$title = "Shop";
return view('pages.shop', compact('products', 'title'));
}
@section('content')
<h1>{{ isset($title) ? $title : '-' }}</h1>
@if($products->count())
<ul class="list-group">
@foreach($products as $product)
<li class="list-group-item">{{ isset($product->title) ? $product->title : '-' }}</li>
@endforeach
</ul>
@else
<p>No products</p>
@endif
@endsection
您可以通過首先將數據作為數組傳遞給視圖來顯示數據
return view('pages.shop')->with('data', $data);
然后在刀片
@section('content')
<h1>{{$data['title']}}</h1>
@if(count($data['products']))
<ul class="list-group">
@foreach($data['products'] as $product)
<li class="list-group-item">{{$product->title}}</li>
@endforeach
</ul>
@else
<p>No products</p>
@endif
@endsection
將$ products和$ title都傳遞給視圖,我更喜歡使用緊湊的感覺更清潔。
$title = 'shop';
$products = DB::table('products')->get();
return view('pages.shop', compact('title', 'products');
然后,您可以在視圖中直接引用它們。 正如您現在正在做的那樣。
@section('content')
<h1>{{$title}}</h1>
@if($products->count())
<ul class="list-group">
@foreach($products as $product)
<li class="list-group-item">{{$product->title}}</li>
@endforeach
</ul>
@else
<p>No products</p>
@endif
@endsection
在您的控制器中
$title = 'shop';
$products = DB::table('products')->get();
return view('pages.shop', compact('title', 'products');
OR
$products = DB::table('products')->get();
$data = array(
'title'=>'Shop',
'products' => $products
);
return view('pages.shop')->with('data',$data);
在你的刀片
@section('content')
<h1>{{$title}}</h1>
@if(count($products))
<ul class="list-group">
@foreach($products as $product)
<li class="list-group-item">{{$product->title}}</li>
@endforeach
</ul>
@else
<p>No products</p>
@endif
@endsection
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.