我使用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
。
您能帮我还是指出另一种更好的方法?
答案 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')