在Laravel 4中,我如何在主布局中获取当前视图名称?

4
在Laravel 4中,我有一个主要的blade布局,并且我想向html元素添加一个类,如'tpl-home',但我需要知道使用View :: make调用的当前视图名称。
<!doctype html>
<html lang="es" class="tpl-{{Str::slug($currentViewName)}}">

Laravel提供了检索此功能的任何函数吗?
谢谢
2个回答

15

在你的筛选器文件中放置以下内容:

View::composer('*', function($view){

    View::share('view_name', $view->getName());

});

然后在您的主刀版局中,您可以将其作为$view_name访问。


在Laravel 5中,你会怎么做? - FooBar
这个可以工作,但是如果你使用任何 @include 来引入局部视图,那么它们会覆盖 view_name 为最后加载的视图。 - richardkmiller
@Mattias 这个可以通过将其添加到服务提供者来实现。 - Carson Reinke

4

视图组合器是在视图中保留/共享变量的好方法,但在路由文件中设置的视图名称更像是每个视图中的固定值而不是变量。因此,在这种情况下,我更愿意在 Blade 中使用Request::path() == 'viewName'

<ul class="nav navbar-nav">
  <li{{ Request::path() == 'admin' ? ' class="active"' : '' }}>
    <a href="{{ URL::to('/admin') }}">Admin</a>
  </li>
  <li{{ Request::path() == 'bookings' ? ' class="active"' : '' }}>
    <a href="{{ URL::to('/bookings') }}">Bookings</a>
  </li>
  ...

这是一种不错的技术,但在模板中硬编码路径会使重构变得更加困难。 - itsjavi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接