我正处于尝试理解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
为什么我的数组为空?
答案 0 :(得分:1)
在您的控制器上:
$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
答案 1 :(得分:1)
尝试一下......
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
答案 2 :(得分:0)
您可以通过首先将数据作为数组传递到视图来显示数据
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
答案 3 :(得分:0)
将$ 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
答案 4 :(得分:0)
在您的控制器中
<!DOCTYPE html>
<html>
<title>Web Page Design</title>
<body>
<a id="shareFB">FB</a>
</body>
</html>
在你的剑刃中
$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);