【问题标题】:How can I get the current view name inside a master layour in Laravel 4?如何在 Laravel 4 的主布局中获取当前视图名称?
【发布时间】:2014-03-14 11:24:26
【问题描述】:

在 Laravel 4 中,我有一个主刀片布局,我想向 html 元素添加一个类,例如“tpl-home”,但我需要知道哪个是当前使用 View::make 调用的视图名称。

<!doctype html>
<html lang="es" class="tpl-{{Str::slug($currentViewName)}}">

Laravel 是否提供任何函数来检索这个?

谢谢

【问题讨论】:

    标签: php laravel-4


    【解决方案1】:

    在您的过滤器文件位置:

    View::composer('*', function($view){
    
        View::share('view_name', $view->getName());
    
    });
    

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

    【讨论】:

    • 你会如何在 Laravel 5 中做到这一点?
    • 这行得通,但如果你使用任何@include 的部分,那些覆盖view_name 与任何最后加载的视图。
    • @Mattias 这可以通过将其添加到服务提供商来实现
    【解决方案2】:

    View Composer 是在视图中保留/共享变量的好方法,但在路由文件中设置的视图名称在每个视图中更像是一个固定值而不是变量,这就是为什么在这种情况下,

    我宁愿像这样在 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>
      ...
    

    【讨论】:

    • 这是一个很好的技术,但是在模板中硬编码路径会使其更难重构。
    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2013-09-02
    • 2014-02-18
    • 2011-09-12
    相关资源
    最近更新 更多