Laravel 5 GET视图名称

问题描述 投票:6回答:2

我挣扎在L5得到视图名。正如在WP,我想为造型添加特定的页面名称(视图名称),如下所示:

<!-- View name: login.blade.php !-->
<div id="page" class="page-login">
    <h1>Inloggen</h1>
</div>

<!-- View name: register.blade.php !-->
<div id="page" class="page-register">
    <h1>Registreren</h1>
</div>

在L4它可以使用作曲家分享所有的意见(How can I get the current view name inside a master layour in Laravel 4?)的变种来完成。但我只需要视图名曾经为我的总体布局。

这样做:

<div id="page" class="page-{{ view()->getName() }}">

给我下面的错误Call to undefined method Illuminate\View\Factory::getName()

提前致谢!

php templates view laravel-5
2个回答
24
投票

通过添加视图作曲家的引导方法,用“*”与所有的意见分享更新您的AppServiceProvider:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;    

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer('*', function($view){
            $view_name = str_replace('.', '-', $view->getName());
            view()->share('view_name', $view_name);
        });

    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

{{$view_name}}将提供给您的刀片模板。


0
投票

基于@motto答案我是能够得到叶片文件中眨眼。

find()是在搜索视图,路径和命名空间ViewFileFinder类的功能。

然后爆炸的回报来获取文件名。 last()是laravel一个辅助功能。

@php
   $view1 = View::getFinder()->find('login');
   $page_login= last(explode('/', $view)); // this return login.blade.php
   $view2 = View::getFinder()->find('register');
   $page_register= last(explode('/', $view)); // this return register.blade.php
@endphp

@if($page_login == 'login.blade.php')
<!-- View name: login.blade.php !-->
<div id="page" class="page-login">
    <h1>Inloggen</h1>
</div>
@endif

@if($page_register == 'register.blade.php')
<!-- View name: register.blade.php !-->
<div id="page" class="page-register">
    <h1>Registreren</h1>
</div>
@endif
© www.soinside.com 2019 - 2024. All rights reserved.