如何在 Laravel 5 中检索视图名称?

Posted

技术标签:

【中文标题】如何在 Laravel 5 中检索视图名称?【英文标题】:How to retrieve the view name in Laravel 5? 【发布时间】:2018-04-01 20:29:35 【问题描述】:

我尝试了多种方法,包括这里的热门帖子:Add View Name to CSS Class on Body

但它会提取主模板,而不是子模板名称。我使用@yield 和@extends 等。所以目前这是我的文件系统的一部分在我看来是这样的:

-Views
--Layouts
---=master.blade.php
--Shipments
---=index.blade.php

所以我的 shipping.index 文件将 @extends('layouts.master'),这样我就没有那么多冗余了。但是,参考上面的帖子,我得到以下结果:

<div id="page" class="layouts.master">

这不是我想要的,我至少更喜欢“shipments.index”,我不介意它是否更长,我只是想识别它。

【问题讨论】:

查看this 之类的内容。它用于获取视图目录,但稍作修改即可为您工作 @ljubadr - 我会改变什么?直接使用它只会在 html 中给我一个空白响应。没有错误或任何东西,只是没有使用 $view_folder 响应 - 你有什么建议吗?谢谢! 我已经创建了一个答案,看看,如果它有效,请告诉我 Laravel 5 get view name的可能重复 【参考方案1】:

你可以使用 Laravel View Composers

View Composer 是回调或类方法,当 视图被渲染。如果您有想要绑定到视图的数据 每次呈现该视图时,视图编辑器都可以帮助您组织 将该逻辑放到一个位置。

在文件app/Providers/AppServiceProvider.php中,编辑public function boot()方法

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot(Application $app)

    view()->composer('*', function($view) 
        view()->share('view_name', $view->getName());
    );

在此之后,您现在可以在任何刀片模板中访问变量

$view_name

【讨论】:

看起来这是duplicate。刚看到其他问题 这个版本有效!非常感谢您的帮助!! 一个快速说明:这将适用于您正在加载的视图,但不适用于子视图,因为它将始终显示主视图名称(当您执行 @include('another.view') 时) @Matthew 我很高兴能帮上忙

以上是关于如何在 Laravel 5 中检索视图名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 5.7 中获取当前视图名称(页面名称)

如何在 Laravel 5 下拉列表中检索选定选项的值?

如何在 LARAVEL 5.2 中将数据存储到数据库中

如何在 Laravel 的同一视图中检索或返回不同的记录?

如何从 laravel 中的某个路由页面检索图像或文件?

将数组从 AuthController 传递到 Laravel 5 中的登录视图