我正在寻找一种方法来回显视图名称,并将其作为CSS类放入body标记内的主模板中.
原因是我有一些页面需要更改某些CSS元素,但内联代码效率低下,我真的不想为该页面制作专用视图.
因此,例如,如果我要登陆主页,那么正文标记将是:
<body class="home">
Run Code Online (Sandbox Code Playgroud)
如果我要去关于我们的页面,它将改为:
<body class="about">
Run Code Online (Sandbox Code Playgroud)
添加到过滤器(或路线):
View::composer('*', function($view){
View::share('view_name', $view->getName());
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用访问视图名称 $view_name
小智 6
尝试这个:
<body class="@yield('class')">
Run Code Online (Sandbox Code Playgroud)
以及你的看法
@section('class', 'Your boddy class')
Run Code Online (Sandbox Code Playgroud)
在您的控制器中使用它
View::composer('*', function($view){
View::share('view_name', $view->getName());
});
Run Code Online (Sandbox Code Playgroud)
在您的视图页面中使用它
<body class="{{$view_name}}">
Run Code Online (Sandbox Code Playgroud)
打开您的AppServiceProvider类、boot()方法并插入以下代码:
View::composer('*', function ($view) {
$view_name = str_replace('.', ' ', $view->getName());
View::share('view_name', $view_name);
});
Run Code Online (Sandbox Code Playgroud)
$view_name然后您可以在视图中访问变量。
关于@Stuart的答案, use$view->getName()将返回带有点符号的精确视图路径。例如,您的视图位于resources/views/settings/index目录下,您的视图名称为:settings.index。
那么呢?类名将包含dot字符,这意味着在编写 CSS 时会更加混乱。请参阅此线程:
在类名中使用点 (.) 设计元素样式
通过替换.为空格,上面示例中的类名将变为settings index,您可以使用.settings选择器,或.index选择器,或.setting.index选择器。
上面的方法是自动生成类名的,有很多方法:
@yield()和@section()
<body class="@yield('body-class')">
Run Code Online (Sandbox Code Playgroud)
那么在你看来:
@section('body-class', 'your-class-name')
Run Code Online (Sandbox Code Playgroud)
@stack()和@push()
从 Laravel 5.4 开始,您可以使用@stack和@push,这允许您根据需要推送任意数量的时间。
<body class="@stack('body-class')">
Run Code Online (Sandbox Code Playgroud)
那么在你看来
@push('body-class', 'your-class-name')
@push('body-class', ' another-class-name')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1648 次 |
| 最近记录: |