casaparks / extract-routes
Casa-Parks 的 Laravel 路由提取器。
1.0.0
2017-03-15 20:53 UTC
Requires
- php: >=5.6.4
- illuminate/contracts: 5.4.x-dev
- illuminate/routing: 5.4.x-dev
- illuminate/support: 5.4.x-dev
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.0|~5.0
This package is not auto-updated.
Last update: 2024-09-15 02:09:06 UTC
README
简介
Extract Routes 是一个简单的路由列表提供工具,旨在为前端(例如:JavaScript)提供便利。
许可证
Extract Routes 是开源软件,遵循 MIT 许可证
安装
要开始使用 Extract Routes,请使用 Composer 将此包添加到项目的依赖中
composer require casa-parks/extract-routes
配置
安装后,在配置文件 config/app.php
中注册 CasaParks\ExtractRoutes\ExtractRoutesServiceProvider
'providers' => [ // Other service providers... CasaParks\ExtractRoutes\ExtractRoutesServiceProvider::class, ],
基本用法
创建一个简单的视图生成器,如下所示
<?php namespace App\Composers; use CasaParks\ExtractRoutes\Service as RoutesExtractor; use Illuminate\Contracts\View\View; class RoutesComposer { /** * The routes extractor. * * @var \CasaParks\ExtractRoutes\Service */ protected $extractor; /** * Whether the data is cached or not. * * @var bool */ protected $cached; /** * The view data. * * @var array */ protected $data; /** * Creates a new routes composer. * * @param \CasaParks\ExtractRoutes\Service $extractor */ public function __construct(RoutesExtractor $extractor) { $this->extractor = $extractor; } /** * Compose the view. * * @param \Illuminate\Contracts\View\View $view * * @return void */ public function compose(View $view) { if (! $this->cached) { $this->cache(); } $view->with($this->data); } /** * Cache the data. * * @return void */ protected function cache() { $this->cached = true; // We don't want to include any admin / api routes. $routes = $this->extractor->filterOnly('middleware', 'guest', 'auth'); $this->data = compact('routes'); } }
将此视图生成器添加到你的应用程序(或 composer)服务提供者的 boot
方法中
/** * Register any composers for your application. * * @return void */ public function boot() { // ... // assuming `layout` is your common layout template. $this->app['view']->composer('layout', 'App\Composers\RoutesComposer'); // ... }
在你的通用 layout
模板文件中
<!-- ... --> <head> <!-- ... --> <script>window.routes = {!! $routes->toJson() !!}</script> <!-- ... --> </head> <!-- ... -->
然后在你的 JavaScript 中按需使用。