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

时间:2019-04-03 09:53:02

标签: laravel file indexing carousel display

我使用laravel 5.2并尝试仅在索引页面中显示轮播,但不起作用。 我选择不将代码“散布”在索引页上,它们也存储在: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。 您能帮我还是指出另一种更好的方法?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

一种更好且更幼稚的方法是将文件重命名为carousel.blade.php,将其存储在resources/views文件夹中,然后只需将其包含在主刀片文件中即可(无需使用)在控制器中执行任何操作):

@include('carousel')

如果只需要在某些页面上显示轮播,则只需在需要显示该页面的页面上传递变量$carousel = true

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

在刀片视图中,仅当存在此变量且为true时才包括轮播文件:

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