lord/laroute
Composer 安装命令:
composer require lord/laroute
包简介
Access Laravels URL/Route helper functions, from JavaScript.
README 文档
README
Laravel has some pretty sweet helper functions for generating urls/links and its auto-json-magic makes it building APIs super easy. It's my go-to choice for building single-page js apps, but routing can quickly become a bit of a pain.
Wouldn't it be amazing if we could access our Laravel routes from JavaScript?
This package allows us to port our routes over to JavaScript, and gives us a bunch of very familiar helper functions to use.
Installation
Install the usual composer way.
composer.json
{
"require" : {
"lord/laroute" : "2.*"
}
}
n.b Laravel 4.x users, check out version 1.3.2
app/config/app.php
... 'providers' => array( ... Lord\Laroute\LarouteServiceProvider::class, ], ...
Configure (optional)
Copy the packages config files.
php artisan vendor:publish --provider='Lord\Laroute\LarouteServiceProvider'
app/config/packages/lord/laroute/config.php
return [ /* * The destination path for the javascript file. */ 'path' => 'public/js', /* * The destination filename for the javascript file. */ 'filename' => 'laroute', /* * The namespace for the helper functions. By default this will bind them to * `window.laroute`. */ 'namespace' => 'laroute', /* * Generate absolute URLs * * Set the Application URL in config/app.php */ 'absolute' => false, /* * The Filter Methode * * 'all' => All routes except "'laroute' => false" * 'only' => Only "'laroute' => true" routes * 'force' => All routes, ignored "laroute" route parameter */ 'filter' => 'all', /* * Action Namespace * * Set here your controller namespace (see RouteServiceProvider -> $namespace) for cleaner action calls * e.g. 'App\Http\Controllers' */ 'action_namespace' => '', /* * The path to the template `laroute.js` file. This is the file that contains * the ported helper Laravel url/route functions and the route data to go * with them. */ 'template' => 'vendor/lord/laroute/src/templates/laroute.js', /* * Appends a prefix to URLs. By default the prefix is an empty string. * */ 'prefix' => '', ];
Generate the laroute.js
To access the routes, we need to "port" them over to a JavaScript file:
php artisan laroute:generate
With the default configuration, this will create a public/js/laroute.js file to include in your page, or build.
<script src="/js/laroute.js"></script>
Note: You'll have to laroute:generate if you change your routes.
JavaScript Documentation
By default, all of the functions are under the laroute namespace. This documentation will stick with this convention.
action
Generate a URL for a given controller action.
/** * laroute.action(action, [parameters = {}]) * * action : The action to route to. * parameters : Optional. key:value object literal of route parameters. */ laroute.action('HomeController@getIndex');
route
Generate a URL for a given named route.
/** * laroute.route(name, [parameters = {}]) * * name : The name of the route to route to. * parameters : Optional. key:value object literal of route parameters. */ laroute.route('Hello.{planet}', { planet : 'world' });
url
Generate a fully qualified URL to the given path.
/** * laroute.url(name, [parameters = []]) * * name : The name of the route to route to. * parameters : Optional. value array of route parameters. */ laroute.url('foo/bar', ['aaa', 'bbb']); // -> /foo/bar/aaa/bbb
link_to
Generate a html link to the given url.
/** * laroute.link_to(url, [title = url, attributes = {}]]) * * url : A relative url. * title : Optional. The anchor text to display * attributes : Optional. key:value object literal of additional html attributes. */ laroute.link_to('foo/bar', 'Foo Bar', { style : "color:#bada55;" });
link_to_route
Generate a html link to the given route.
/** * laroute.link_to_route(name, [title = url, parameters = {}], attributes = {}]]]) * * name : The name of the route to route to. * title : Optional. The anchor text to display * parameters : Optional. key:value object literal of route parameters. * attributes : Optional. key:value object literal of additional html attributes. */ laroute.link_to_route('home', 'Home');
link_to_action
Generate a html link to the given action.
/** * laroute.link_to_action(action, [title = url, parameters = {}], attributes = {}]]]) * * action : The action to route to. * title : Optional. The anchor text to display * parameters : Optional. key:value object literal of route parameters. * attributes : Optional. key:value object literal of additional html attributes. */ laroute.link_to_action('HelloController@planet', undefined, { planet : 'world' });
PHP Documentation
Ignore/Filter Routes
By default, all routes are available to laroute after a php artisan laroute:generate. However, it is sometimes desirable to have laroute ignore certain routes. You can do this by passing a laroute route option.
Route::get('/ignore-me', [ 'laroute' => false, 'as' => 'ignoreme', 'uses' => 'IgnoreController@me' ]); Route::group(['laroute' => false], function () { Route::get('/groups-are-super-useful', 'GroupsController@index'); });
Licence
lord/laroute 适用场景与选型建议
lord/laroute 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2M 次下载、GitHub Stars 达 790, 最近一次更新时间为 2014 年 03 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「routing」 「javascript」 「routes」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 lord/laroute 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 lord/laroute 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 lord/laroute 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Generates a Blade directive exporting all of your named Laravel routes. Also provides a nice route() helper function in JavaScript.
Block routes by IP
Caching and compression for Twig assets (JavaScript and CSS).
A pretty nice way to expose your translation messages to your JavaScript.
Provides caching methods which can be easily used for caching routes.
Write down your routing mapping at one place
统计信息
- 总下载量: 2M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 802
- 点击次数: 23
- 依赖项目数: 9
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2014-03-14
