【问题标题】:How can I get the name of a page via Laravel Blade如何通过 Laravel Blade 获取页面名称
【发布时间】:2013-12-25 21:22:48
【问题描述】:

这是我的控制器的代码:

    public function getIndex()
{
    // Get all the apps
    $apps = $this->app->orderBy('created_at', 'DESC')->paginate(50);

    // Show the page
    return View::make('site/apps/index', compact('apps'));
}

如何在我的模板“站点/应用程序/索引”中获取页面名称?

当我执行 var_dump() 时,我得到一个无法筛选的巨大数组和对象。

我正在寻找最佳实践。

我试图获取页面名称的原因是为了控制何时将 CSS 值添加到 HTML。

这是我现在正在做的事情:

@if (Auth::check())
    <style>
        body {
            background-color: #fbfbfb !important;
        }
    </style>
    @endif

但不是我登录时的所有页面都应该有那种背景颜色,只有一个...页面名称是应用程序。

如果你有更好的方法,欢迎分享。

【问题讨论】:

    标签: php css laravel laravel-4 blade


    【解决方案1】:

    您可以实现此目的的一种方法是获取当前 URL 并根据您要对其进行 CSS 更改的 URL 进行验证。看看this post 看看这是怎么做到的。

    【讨论】:

      【解决方案2】:

      当我查看代码时,您似乎可以根据用户是否登录来操纵 body 元素的样式。

      我会这样解决这个任务:

      创建两个类并将它们添加到您的外部 CSS 文件中。

      .body-logged-in{
        background-color: #somecolor;
      }
      
      .body-not-logged-in{
        background-color: #someothercolor;
      }
      

      根据您从路由器或控制器获得的信息,在您的模板文件中回显相关的类名。

      例如路由器:

      Route::get('yourpage', function()
      {   
          $users = User::all();
          return View::make('yourtemplate')->with('users', $users)->with('loggedInStatus', 'body-logged-in'); 
      });
      

      当您的模板通过了用户的身份验证详细信息时,您就知道当前用户已登录。或者使用您的控制器将 loggedInStatus 传递给模板。

      可能是这样的

      <body class="{{ $loggedInStatus }}" >
      

      通过这种方法,您可以保持 MVC 原则并且不会弄乱您的代码。如果要更改 CSS 样式,只需编辑 .CSS 文件。这样您就不需要触摸模板/视图文件。此外,如果您想将其添加到其他页面,则无需检查页面名称并仅使用视图和 CSS。

      最后,这取决于您的业务逻辑需要什么。希望我能给你一些想法。

      【讨论】:

        猜你喜欢
        • 2019-04-06
        • 2011-09-13
        • 1970-01-01
        • 2016-07-11
        • 2015-02-12
        • 2011-09-09
        • 1970-01-01
        • 2018-11-15
        • 1970-01-01
        相关资源
        最近更新 更多