laravel 5.2 仅在索引页中的轮播不起作用

laravel 5.2 carousel only in index page doesn't wok

我使用 laravel 5.2 并尝试仅在索引页中显示轮播但不起作用。 我选择的代码不是索引页上的"spreaded",它们存储在:public/carousel/carousel.php,也是(不是...blade.php).

route.php:

Route::get('/', 'HomeController@index')

HomeController.php:

    {
        $cats = Category::all();
        $carousel = public_path('carousel/carousel.php');
        //$carousel = storage_path('public/carousel/carousel.php');
        return view('layouts.app', compact('cats', 'carousel'));
    }

layouts/app.blade.php:

 {{-- @include('carousel/carousel');--}}

            @if($carousel)
            {{ $carousel }}
            @endif

            @yield('content')

最后只显示:C:\wamp\www\app_name\public\carousel/carousel.php。 你能帮我或指出另一个更好的方法吗?

在您的控制器中,您正在向视图传递一个名为 $carousel 的变量,它是您的文件的路径,正如您在此处定义的那样:

$carousel = public_path('carousel/carousel.php');

这就是它只显示字符串的原因。您需要获取文件的实际内容:

$carousel = file_get_content(public_path('carousel/carousel.php'));

更好更 laravel-ish 的方法是将文件重命名为 carousel.blade.php,将其存储到 resources/views 文件夹中,然后简单地从主 blade 文件(无需在控制器中做任何事情):

@include('carousel')

如果你只需要在某些页面显示轮播,你可以简单地在需要显示的页面上传递一个变量$carousel = true

$carousel = true;
return view('layouts.app',compact('carousel'));

并且在您的 blade 视图中,仅当此变量存在且为真时才包含轮播文件:

@includeWhen(isset($carousel) && $carousel, 'carousel')