Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5获取视图名称_Php_Templates_View_Laravel 5 - Fatal编程技术网

Php Laravel 5获取视图名称

Php Laravel 5获取视图名称,php,templates,view,laravel-5,Php,Templates,View,Laravel 5,我正努力在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" c

我正努力在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中,可以使用composer在所有视图()中共享var。但是对于主布局,我只需要一次视图名称

这样做:

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

给我以下错误
调用undefined方法illumb\View\Factory::getName()


提前谢谢

通过向引导方法添加视图生成器并使用“*”与所有视图共享来更新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()
    {
        //
    }
}

基于@mainton-answer,我能够在一眨眼之间获得刀片文件

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
@php
$view1=View::getFinder()->find('login');
$page_login=last(分解('/',$view));//返回login.blade.php
$view2=View::getFinder()->find('register');
$page_register=last(分解('/',$view));//返回register.blade.php
@endphp
@如果($page_login=='login.blade.php')
因洛根
@恩迪夫
@如果($page_register=='register.blade.php')
登记员
@恩迪夫

您唯一的选择是视图生成器。这有什么问题?好吧,我想还有另一种方法,但我可以使用视图生成器。谢谢。您如何将此值返回到启动函数@spedley?我想这样做,以便我可以更改返回值,并通过单独的view->share命令返回。@AdamJones-如果我正确理解您的问题,我认为(使用您自己的自定义mods),答案中的示例代码应该已经基本满足您的需要。它接受返回值“$view->getName()”,对其进行更改(例如:将“partials.help”更改为“partials help”),并通过view()->share('view_name',$view_name')与所有视图共享。我不确定我是否理解将其返回引导功能的必要性。