我很困惑如何将变量从控制器传递到视图。我知道有很多关于这个已经在库存溢出,但无法找到一个有效的,请指出我正确的方向。谢谢。
CONTROLLER
class StoreController extends Controller
{
public function index()
{
$store = Store::all(); // got this from database model
return view('store', $store);
}
{
查看
// try a couple of differnt things nothing works
print_r($store);
print_r($store[0]->id);
print_r($id);
答案 0 :(得分:22)
public function index()
{
$store = Store::all(); // got this from database model
return view('store')->with('store', $store);
}
一般来说,你有三种选择。
return view('store')->with('store', $store);
return view('store')->withStore($store);
return view('store')->with(compact('store'));
1.创建一个名为store
的变量,该变量将在view
中提供,并将值存储在变量$store
中。
2.对于上面的那个。
3.也是一个简短的手,它创建的值与传递的值相同。
现在,在您的view
中,您可以使用
{{ $store->name }}
对于所有3种方法都是一样的。
答案 1 :(得分:4)
试试这个
public function index()
{
return view('store', ['store' => Store::all()]);
}
然后您可以在评论中访问$ store。
答案 2 :(得分:3)
到目前为止提供的两个答案都将解决您的问题,但同样值得一提的是,您提供$store
作为view()
的第二个参数的原始方法几乎是正确的。您缺少的是参数需要是要传递给视图的变量数组。
我可能会使用return view('store', compact('store'));
,但您也可以使用return view('store', ['store' => $store]);
。
答案 3 :(得分:2)
试试这个:
class StoreController extends Controller
{
public function index()
{
$store = Store::all(); // got this from database model
return view('store')->withStore($store);
}
}
View :
{{$store->id}}
答案 4 :(得分:2)
它对我有用。您可以像这样使用'compact':
CONTROLLER:
class StoreController extends Controller
{
public function index()
{
$store = Store::all(); // 'don't forget' use App\Driver;
return view('store', compact('store'));
}
}
不要忘记图书馆:use App\Store;
查看:
在视图中,您有一个数组,其中所有数据都只是调用{{ $store }}
如果您想要特定数据,请使用以下内容:
@foreach($store as $data)
{{ $data->name }}
@endforeach
不要忘记使用Laravel的“Forms& HTML”,这里是文档的链接:https://laravel.com/docs/4.2/html
答案 5 :(得分:1)
在larval v5.6.3中,我将Array从Controller传递给View,就像这样,
$data = array(
'title' => 'Welcome to Laravel',
'services' => ['Web Design', 'Programming', 'SEO']
);
return view('pages.index', compact('data'));
在HTML中,您可以将Array as,
读取@if(count($data['services']) > 0)
<ul>
@foreach($data['services'] as $service)
<li>{{$service}}</li>
@endforeach
</ul>
@endif
答案 6 :(得分:0)
即使其他方法运行良好,建议的方法是使用compact()帮助器作为参数。
public function index()
{
$stores = Store::all(); // got this from database model
return view('store', compact('stores'));
}
在laravel 5.2中&#34; with()&#34;方法也用于将数据刷新到您的视图,紧凑的帮助器可以处理多个变量。
来源:Laravel文档和个人经历。
答案 7 :(得分:0)
我使用
进行同样的挑战return view('store', compact('store'));
但我宁愿在刀片文件中使用<?php foreach()... ?>
进行测试。我改为{{ }}
刀片语法,现在一切正常。
答案 8 :(得分:0)
在Laravel 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));
}
{