如何在Laravel中将变量从一个视图包含到另一个视图中?

时间:2016-06-19 08:40:43

标签: php laravel laravel-5.2

我是Laravel框架的初学者。我有一个CategoryControllerallCategory.blade.php视图。我有一个welcome.blade.php视图。现在我希望在welcome.blade.php中插入所有类别值view.When我尝试了它的节目未定义的变量:$category

allCategory.blade.php:

@if(count($categories))
<table id="example2" class="table table-bordered table-hover" width="65%">
    <thead>
        <tr>
            <th># Index</th>
            <th>Category Name</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody>
    @foreach($categories as $category)
        <tr>
            <td>{{$category->sortInd}}</td>
            <td>{{$category->categoryName}}</td>
            <td><a class="btn btn-info badge bg-light-blue" href="{{route('editCategory',$category->id)}}">Edit</a> | <a class="btn btn-danger badge bg-red" href="{{route('deleteCategory',$category->id)}}">Delete</a></td>
        </tr>
    @endforeach
    </tbody>
</table>
{{$categories->links()}}
@endif

CategoryController:

public function index()
{
    $categories = Category::where('id', '>=', 1)->paginate(10);              
    return view('jobs.allCategory', ['categories' => $categories]);
}

我想要这种 solution 。但它不起作用。

现在我想显示与allCategory.blade.php相同的类别值。如何将变量值从一个视图传递到另一个视图?谢谢你提前。

N.B:如果您需要任何文件,请告诉我。

4 个答案:

答案 0 :(得分:1)

好的,我有一个compact()函数的解决方案。在我WelcomeController我只查询所有类别数据并使用compact()函数。compact() function create来自变量及其值的数组。因此,我可以查询不同的表数据并使用compact(),以便我可以使用welcome循环查看foreach()刀片中的所有数据。类似于的是:

WelcomeController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Category;
use App\Job;
use App\Http\Requests;

class WelcomeController extends Controller
{
    public function index()
    {
        $jobs = Job::all();
        $categories = Category::all();
        return view("welcome",compact('categories','jobs'));
    }

检索 welcome.blade.php中的值:

 @foreach($categories as $category)
    <ul class="trends">
       <li><a href="#">{{ $category->categoryName}} &nbsp;<span class="item-numbers">(2,342)</span></a></li>
    </ul>
 @endforeach

希望它会对某人有所帮助。

答案 1 :(得分:0)

在第一个视图中加入您的辅助视图,如下所示:

@include('welcome', ['categories' => $categories])

使用welcome.blade.php访问$categories中变量的值,如果这不起作用,则表示您正在做其他错误,因为这是正确的做法

答案 2 :(得分:0)

$categories必须住在view composer

例如,将其添加到您的AppServiceProvider

view()->composer('welcome.blade.php', function($view)
{
    $categories = Category::all();
    $view->with('categories', $categories);
});

现在$categories可用于所有观看次数和部分观看次数。

您当然可以将视图编辑器提取到专用服务提供商。

答案 3 :(得分:-1)

如果将数据正确传递给视图,则应该没问题。最基本的方法之一是这样的:

$category = []; // Some array

return View::make('welcome')->with('category', $category);