Laravel5如何传递数组来查看

时间:2016-02-10 21:19:09

标签: laravel

我很困惑如何将变量从控制器传递到视图。我知道有很多关于这个已经在库存溢出,但无法找到一个有效的,请指出我正确的方向。谢谢。

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); 

9 个答案:

答案 0 :(得分:22)

public function index()
{
  $store = Store::all(); // got this from database model

  return view('store')->with('store', $store); 
}

一般来说,你有三种选择。

  1. return view('store')->with('store', $store);

  2. return view('store')->withStore($store);

  3. return view('store')->with(compact('store'));

  4. 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)); 
    }
 {