pyaesone17 / active-state
Laravel URL 激活状态检查器
v1.2
2017-09-29 06:39 UTC
README
简单的 Laravel 请求 URL 激活检查器
有时您需要检查请求 URL 是否处于活动状态,特别是对于后端侧边栏。以下是几个用途。
基本上我们会这样做。
<li class="sidebar {{ Request::is('post') ? 'active' : 'no' }} ">Post</li> <li class="sidebar {{ Request::is('page') ? 'active' : 'no' }} ">Page</li>
如果能更简洁就更好了,对吧?
<li class="sidebar {{ active_check('post') }} ">Post</li> <li class="sidebar {{ active_check('page') }} ">Page</li>
安装
使用 composer
安装
Laravel 5.4 及以上版本
composer require pyaesone17/active-state:^1.1.1
Laravel 5.3 及以下版本
composer require pyaesone17/active-state:^0.0.2
并在 config/app.php
中添加服务提供者
'providers' => [ ........, Pyaesone17\ActiveState\ActiveStateServiceProvider::class, ]
如果您想使用外观,请将以下内容添加到 config/app.php
中的外观配置中
'aliases' => [ ........, 'Active' => Pyaesone17\ActiveState\ActiveFacade::class, ]
发布配置文件
php artisan vendor:publish --provider="Pyaesone17\ActiveState\ActiveStateServiceProvider"
使用方法
它会检查您的请求是否与 www.url.com/data
匹配。如果请求匹配此 URL,则将返回配置文件中的默认值。默认值对于 true 状态是 "active"
,对于 false 是 "no"
。您可以在 active.php 中进行配置。
{{ Active::check('data') }}
检查确切 URL。
{{ Active::check('data') }} // check request is www.url.com/data
要深入检查 URL,只需将 true
值作为第二个参数传递。
{{ Active::check('data',true) }} // check request is www.url.com/data || www.url.com/data/*
或者
{{ Active::check(['data','post','categories']) }} // check request is www.url.com/data || www.url.com/post || www.url.com/categories
{{ Active::check(['data','post','categories'],true) }} // check request is www.url.com/data/* || // check request is www.url.com/post/* || www.url.com/categories/*
要动态更改返回值,只需传递第三个和第四个参数。
{{ Active::check('data',true,'truth','fake') }} // it will override the value from config file.
或者您甚至可以使用辅助函数。
{{ active_check('data') }}
您还可以使用此包进行条件显示数据。在某些情况下,您可能需要根据请求渲染模板的一部分。
@ifActiveUrl('data') <p>Foo</p> @else <p>Bar and Bazz</p> @endIfActiveUrl
高级用法及以上版本 1.1.1
检查路由名称。
{{ Active::checkRoute('users.index') }} // check request url route name is "users.index"
或者
{{ Active::checkRoute(['users.index','users.show', 'users.edit']) }} // check request url route name is "users.index" or "users.show" or "users.edit"
有时传递多个路由名称作为参数很麻烦。您可以简单地这样做
{{ Active::checkRoute('users.*') }}
当然,您也可以在运行时更改返回值,作为第二和第三个参数。
{{ Active::checkRoute('users.index','routeIsActive','routeNotActive') }}
或者
{{ Active::checkRoute(['users.index','users.show'],'routeIsActive','routeNotActive') }}
对于辅助函数。
{{ active_route('users.comments.*') }}
是的,它也适用于 blade。
@ifActiveRoute('users.index') <p>Foo</p> @else <p>Bar and Bazz</p> @endIfActiveRoute
检查具有完全相同的查询参数值的 URL。
{{ Active::checkQuery('users?gender=male') }} // check request is www.url.com/users?gender=male
或者
{{ Active::checkQuery(['users?gender=male','users?status=married']) }} // check request is www.url.com/users?gender=male or www.url.com/users?status=married
当然,您也可以在运行时更改返回值,作为第二和第三个参数。
{{ Active::checkQuery(['users?gender=male','itIsMale','Ah it is wonder woman') }}
或者
{{ Active::checkQuery(['users?gender=male','users?status=married'],'male or married','nothing') }}
对于辅助函数。
{{ active_query('users?gender=male') }}
是的,它也适用于 blade。
@ifActiveQuery(['users?gender=male','users?status=married']) <p>Foo</p> @else <p>Bar and Bazz</p> @endIfActiveQuery
注意事项
每次更新包时,您都必须运行 "php artisan view:clear" 以清除 blade 指令。
配置
您可以配置激活状态的返回值。
return [ // The default value if the request match given action 'active_state' => 'active', // The default value if the request match given action 'inactive_state' => 'no' ];