如何从controller输出table数据给view?
How to output table data from controller to view?
我正处于尝试理解 Laravel 的开始阶段,但无法显示从控制器传递给 blade 的 'illuminate collection object'。
我的 print_r 正在输出 "Illuminate\Support\Collection Object ( [items:protected] => Array ( ) ) 1",我认为这意味着它看到了数组中的一项(目前只有 table 中的一条记录),但我正在点击@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
为什么我的数组是空的?
您可以先将数据作为数组传递给视图来显示数据
return view('pages.shop')->with('data', $data);
然后在 blade
@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 都传递给视图,我更喜欢使用compact 感觉更干净。
$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);
在你的Blade
@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
在你的控制器上:
$title = 'Shop';
$products = DB::table('products')->get();
return view('pages.shop', compact('title', 'products');
你的Blade:
我还建议将无序列表标签 <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
我正处于尝试理解 Laravel 的开始阶段,但无法显示从控制器传递给 blade 的 'illuminate collection object'。
我的 print_r 正在输出 "Illuminate\Support\Collection Object ( [items:protected] => Array ( ) ) 1",我认为这意味着它看到了数组中的一项(目前只有 table 中的一条记录),但我正在点击@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
为什么我的数组是空的?
您可以先将数据作为数组传递给视图来显示数据
return view('pages.shop')->with('data', $data);
然后在 blade
@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 都传递给视图,我更喜欢使用compact 感觉更干净。
$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);
在你的Blade
@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
在你的控制器上:
$title = 'Shop';
$products = DB::table('products')->get();
return view('pages.shop', compact('title', 'products');
你的Blade:
我还建议将无序列表标签 <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