Карусель laravel 5.2 только на главной странице не работает - PullRequest
1 голос
/ 03 апреля 2019

Я использую 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'));
    }

Макеты / app.blade.php:

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

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

            @yield('content')

Наконец, отображается только: C:\wamp\www\app_name\public\carousel/carousel.php. Можете ли вы помочь мне или указать другой лучший способ?

1 Ответ

0 голосов
/ 03 апреля 2019

В вашем контроллере вы передаете в представление переменную с именем $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')
...