Laravel5如何将数组传递给视图
我对如何将变量从控制器传递到视图感到困惑。我知道在stockoverflow上已经有很多关于这方面的内容,但是找不到一个有效的,请告诉我正确的方向。多谢各位 控制器Laravel5如何将数组传递给视图,laravel,Laravel,我对如何将变量从控制器传递到视图感到困惑。我知道在stockoverflow上已经有很多关于这方面的内容,但是找不到一个有效的,请告诉我正确的方向。多谢各位 控制器 class StoreController extends Controller { public function index() { $store = Store::all(); // got this from database model return view('sto
class StoreController extends Controller
{
public function index()
{
$store = Store::all(); // got this from database model
return view('store', $store);
}
{
看法
试试这个:
class StoreController extends Controller
{
public function index()
{
$store = Store::all(); // got this from database model
return view('store')->withStore($store);
}
}
View :
{{$store->id}}
一般来说,您有三种选择
返回视图('store')->带有('store',$store)代码>
返回视图('store')->带存储($store)代码>
返回视图('store')->带有(compact('store'))代码>
store
的变量,该变量将在视图中可用,并将值存储在变量$store
中
2.上述一项的速记
3.也是一个缩写,它创建与传递值相同的变量名
现在在视图中
可以使用
{{$store->name}
这三种方法都是相同的 到目前为止提供的两个答案都能解决您的问题,但也值得一提的是,您最初将$store
作为view()
的第二个参数提供的方法几乎是正确的。您缺少的是参数必须是要传递给视图的变量数组
我可能会选择returnview('store',compact('store')
但是您也可以使用返回视图('store',['store'=>$store])代码>试试这个
public function index()
{
return view('store', ['store' => Store::all()]);
}
然后,您可以在评论中访问$store
更新:如果您已经在代码中定义了变量,并且希望在视图中使用相同的名称,那么也可以使用compact
方法
例如:
public function index()
{
$store = Store::all();
return view('store', compact('store'));
}
即使其他方法工作得很好,建议使用compact()助手作为参数
public function index()
{
$stores = Store::all(); // got this from database model
return view('store', compact('stores'));
}
在laravel 5.2中,“with()”方法也用于将数据闪存到视图中,compact helper可以处理多个变量
资料来源:Laravel文档和个人体验。我在使用
return view('store', compact('store'));
但是我在blade文件中使用了
来进行测试。我改成了{{}
blade语法,现在一切都很好。它适合我。您可以像这样使用“compact”:
控制器:
class StoreController extends Controller
{
public function index()
{
$store = Store::all(); // 'don't forget' use App\Driver;
return view('store', compact('store'));
}
}
不要忘记库:使用App\Store代码>
视图:
在视图中,您有一个数组,其中所有数据都只是调用{{$store}
如果需要特定的数据,请使用以下内容:
@foreach($store as $data)
{{ $data->name }}
@endforeach
别忘了使用Laravel的“Forms&HTML”,这里是文档的链接:在幼虫v5.6.3中,我将数组从控制器传递到视图,如下所示
$data = array(
'title' => 'Welcome to Laravel',
'services' => ['Web Design', 'Programming', 'SEO']
);
return view('pages.index', compact('data'));
在HTML中,您可以将数组读取为
@if(count($data['services']) > 0)
<ul>
@foreach($data['services'] as $service)
<li>{{$service}}</li>
@endforeach
</ul>
@endif
@if(计数($data['services]])>0)
@foreach($data['services']作为$service)
- {{$service}}
@endforeach
@恩迪夫
在第6、7章中:
class StoreController extends Controller
{
public function index()
{
$store = Store::all(you can write your filed name here); // got this from database model
return view('store', compact($store));
}
{
如果它对您有帮助,请将我的答案设置为解决方案^^它有效!我被困的时间最长,试着按照文档中说的returnview('store',$store)
您介意用Store(…)
解释一下吗?我看到了另一个答案,它只对(…)执行
?是的,您可以同时使用这两个代码:returnview('view')->withVariable($variable);或者:返回视图('view')->带('variable',$variable);:)在view.blade.php中调用它的语法是什么?它们都一样吗?是的,这三种方法都一样。谢谢,现在我知道第二个参数必须是key=>value
通过文档很难理解这个概念,因为我假设数组已经是key=>value
格式。没问题。在学习Laravel时,我花了很长时间才发现将数组作为第二个参数传递甚至是一种选择。我早期的代码有很多returnview('view.name')->带有something($something)->带有somethingElse($somethingElse)代码>!最佳答案,因为它不需要额外的“with()”方法。
@if(count($data['services']) > 0)
<ul>
@foreach($data['services'] as $service)
<li>{{$service}}</li>
@endforeach
</ul>
@endif
class StoreController extends Controller
{
public function index()
{
$store = Store::all(you can write your filed name here); // got this from database model
return view('store', compact($store));
}
{