Laravel 5 获取视图名称
Laravel 5 get view name
我正在努力获取 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 (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()
。
提前致谢!
通过将视图编辑器添加到启动方法并使用“*”与所有视图共享来更新您的 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}}
将可用于您的 blade 模板。
根据@motto 的回答,我眨眼间就得到了 blade 文件。
find()
是 ViewFileFinder
class 中的一个函数,用于搜索视图、路径和命名空间。
然后分解return得到文件名。
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
我正在努力获取 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 (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()
。
提前致谢!
通过将视图编辑器添加到启动方法并使用“*”与所有视图共享来更新您的 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}}
将可用于您的 blade 模板。
根据@motto 的回答,我眨眼间就得到了 blade 文件。
find()
是 ViewFileFinder
class 中的一个函数,用于搜索视图、路径和命名空间。
然后分解return得到文件名。
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