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, ],
用法
ServiceProvider将向您的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 任务。
发现了一个错误?
请告诉我们!发送一个拉取请求(更好)或创建一个问题。有问题?问吧!我们将对所有问题作出回应。
灵感来源
尽管没有复制代码,但本包深受 FOSJsRoutingBundle 的启发,该包是用于 Symfony 的。
许可证
本包是开源软件,受 MIT 许可证 许可。