如何通过Laravel Blade获取页面名称

时间:2013-12-08 21:20:50

标签: php css laravel laravel-4 blade

这是我的控制器的代码:

    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'));
}

从这里我如何在模板“site / apps / index”中获取页面名称?

当我执行var_dump()时,我得到一个巨大的数组和对象,这是不可能筛选的。

我正在寻找最佳实践。

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

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

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

但是,登录时并非所有页面都应该具有背景颜色,只有一个......页面名称是应用程序。

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

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式获取当前网址,并根据您要更改CSS的网址对其进行验证。看看this post,了解这是如何完成的。

答案 1 :(得分:0)

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

我会按如下方式解决这个问题:

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

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

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

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

e.g。路由器:

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。

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