tomhart / laravel-route-from-model
Laravel Route From Model
v1.1.5
2019-12-10 18:02 UTC
Requires
- php: ^7.2
- illuminate/routing: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0
- tomhart/array-from-object: ^1.0
Requires (Dev)
- orchestra/testbench: ^3.8 || ^4.0
- phpstan/phpstan: ^0.12.0
- phpunit/phpunit: ^8.0
- squizlabs/php_codesniffer: *
This package is auto-updated.
Last update: 2024-09-30 01:21:44 UTC
README
此库允许仅从 Model
实例构建路由,自动提取参数,而不是手动传递。
简单示例
想象一个名为 test
的路由
Route::get('/test/{name}')->name('test');
调用
route_from_model('test', SomeModel::find(1));
将成功构建路由,因为 name
是 SomeModel
上的一个属性,可以检索。
现在想象你想要更改路由为
Route::get('/test/{name}/id/{id}/{seo_slug}')->name('test');
使用 Laravel 的默认路由构建,你需要手动到路由构建的每个地方,并指定额外的 id
和 seo_slug
数据应该从哪里来/是什么。只要它们存在于 SomeModel
上,使用上述相同的 route_from_model
调用,它将能够自动构建路由,无需你做任何更改。
关系
使用 route_from_model
,你还可以通过使用 ->
自动从模型关系获取数据
Route::get('/test/{name}/{id}/{parent->relationship->value}/{slug}/{child->value}')->name('test');
如果所有这些关系/属性都存在,route_from_model
将能够构建 URL。路由将成功更改,因为所有额外的部分都可以从 Model
中提取出来。
特质
你还可以将 BuildRouteTrait
添加到你的模型中,并且只要模型有一个
private $routeName = 'test';
属性,你可以使用以下方式构建路由
$route = $model->buildRoute();
属性和静态值
你还可以将 route_from_model
与静态值结合使用。想象以下路由
Route::get('/test/{name}/{static}')->name('test');
其中静态值 不是 在 SomeModel
上可用的属性,你可以简单地将它作为一个数组作为第三个参数传递。
route_from_model('test', SomeModel::find(1), ['static' => 'MyValue']);