laravelba / laravel-js-routes
从您的javascript文件中访问Laravel路由。
Requires
- php: >=5.6.0
- illuminate/console: ^5.0
- illuminate/filesystem: ^5.0
- illuminate/routing: ^5.0
- illuminate/support: ^5.0
Requires (Dev)
- fabpot/php-cs-fixer: ^1.11
- illuminate/events: ^5.0
- jakub-onderka/php-console-highlighter: ^0.3
- jakub-onderka/php-parallel-lint: ^0.9
- mockery/mockery: ^1.0.0@dev
- phpmd/phpmd: ^2.4
- phpunit/phpunit: ^5.3
- squizlabs/php_codesniffer: ^2.6
This package is not auto-updated.
Last update: 2022-02-01 12:58:33 UTC
README
已弃用
此包不再维护。请使用 https://github.com/aaronlord/laroute 或您可能找到的任何其他替代方案!
为什么?
我们热爱Laravel的路由系统,我们经常使用命名路由,例如 route('users.show', ['id' => 1])
来生成 http://domain.tld/users/1
。随着JavaScript框架(AngularJS、EmberJS、Backbone等)的兴起,很难跟踪后端和JavaScript的REST调用之间的路由变化。此库的目标是将这些命名路由暴露给前端,以便您可以执行: Router.route('users.show', {id: 1})
并得到相同的结果。
安装
首先,通过Composer安装此包。
composer require laravelba/laravel-js-routes
要使用此包,请将其服务提供者添加到您的 config/app.php
提供者数组中。
'providers' => [ // ... LaravelBA\LaravelJsRoutes\LaravelJsRoutesServiceProvider::class, ],
用法
服务提供者将为您的 artisan
命令添加一个新的命令 routes:javascript
。默认情况下,此命令将在您的 resources/assets/js
文件夹中生成一个 routes.js
文件。这包含您应用中所有的 命名 路由。就这样!您可以出发了。
$ php artisan routes:javascript
懒提示如果您使用Elixir(或任何js任务管理器),请设置一个监视器,在您的php路由更改时运行此命令。
参数
名称 | 默认值 | 描述 |
---|---|---|
name | routes.js | 输出文件名 |
选项
名称 | 默认值 | 描述 |
---|---|---|
path | resources/assets/js | 将生成的文件名保存到基路径的相对位置。(例如,“public/assets”文件夹,如果您不打算混合使用。) |
middleware | null | 如果您只想在JS上使用一些路由,您可以使用中间件(如js-routable)来选择这些路由 |
object | Router | 如果您想选择自己的全局JS对象(以避免冲突) |
prefix | null | 如果您想为所有路由添加一个前缀 |
JavaScript用法
默认情况下,该命令将在您的 resources/assets/js
文件夹中生成一个 routes.js
文件,因此您可以使用Elixir
elixir(function(mix){ mix.scripts([ 'routes.js', 'app.js' ]); });
您可以在公共文件夹中生成路由文件...
php artisan routes:javascript --path public/js
...然后将其包含在视图中
<script src="/js/routes.js" type="text/javascript">
无论如何,您都会在全局作用域中有一个 Routes
对象。
示例
// Usage: Router.route(route_name, params) Router.route('users.show', {id: 1}) // returns http://dommain.tld/users/1 // If you assign parameters that are not present on the URI, they will get appended as a query string: Router.route('users.show', {id: 1, name: 'John', order: 'asc'}) // returns http://dommain.tld/users/1?name=John&order=asc
贡献
此项目使用 phpunit
进行PHP测试,并使用 jasmine
进行JS测试。请检查 Gruntfile.js
文件中的可用Grunt任务。
发现了一个bug?
请告诉我们!发送一个pull request(更好)或创建一个问题。有问题?问吧!我们将对所有问题做出回应。
灵感来源
尽管没有代码被复制,但这个包深受FOSJsRoutingBundle(用于Symfony)的启发。
许可证
此包是开源软件,许可协议为MIT许可证。