Laravel 5 Laravel中的多态路径模型绑定?
有没有办法在laravel 5上创建一个隐式绑定的多态模型。* 例如:Laravel 5 Laravel中的多态路径模型绑定?,laravel-5,Laravel 5,有没有办法在laravel 5上创建一个隐式绑定的多态模型。* 例如: 路由('project.comment.store',$project->commentable) 像这样登记路线 路由::get('comments/{commentable}/store',..控制器'@store') 并在controller store()方法上接收精确的模型 我猜我能存档的唯一方法就是修改路由到类似这样的东西 路由::get('comments/{commentable\u type}/{
路由('project.comment.store',$project->commentable)
像这样登记路线
路由::get('comments/{commentable}/store',..控制器'@store')
并在controller store()方法上接收精确的模型
我猜我能存档的唯一方法就是修改路由到类似这样的东西
路由::get('comments/{commentable\u type}/{commentable\u id}/store',..controller.@store')
看起来很难看。。但是工作。。。你知道有没有更简单更聪明的方法吗?对不起,我迟到了。您可以按如下方式绑定多态路由模型:
Route::group(['as' => 'fuqu::', 'namespace' => 'FuquIo\\LaravelTags', 'middleware' => ['web', 'auth']], function (){
$models = config(\FuquIo\LaravelTags\ServiceProvider::SHORT_NAME .'.orm');
foreach($models as $short_name => $fqns_class){
$kebbab_name= kebab_case($short_name);
Route::get("/$kebbab_name/{key}/seo", [
'as' => "$kebbab_name.seo",
'uses' => function(\Illuminate\Database\Eloquent\Model $model){
return $model;
}
]);
}
});
//boot()中的my package ServiceProvider.php(或您的RouteServiceProvider.php),但您需要使用light\Routing\Route作为RouteInfo代码>我在绑定中进行的注射
// at the top
use Illuminate\Routing\Route as RouteInfo;
...
// then inject RouteInfo for your binding logic so you can tear apart your url/uri.
Route::bind('key', function ($key, RouteInfo $route) {
$info = explode('/{key}', $route->uri());
$kebab = $info[0];
$orm = studly_case($kebab);
$fqns_class = config(self::SHORT_NAME .'.orm.'. $orm);
return $fqns_class::findOrFail($key);
});
因此,在我的例子中,我有一个配置文件映射SimpleNames=>Fully\NameSpaced\Names::class,但您不需要它。您可以随意解决。为什么不通过POST将对象的id发送到该方法,然后使用Comments::find($id)获取该对象?我的代码中有一个问题……如果我发送的id是$project->id而不是$project->commentable->id,那么当我检索$project->find($id)时它就会起作用->可注释->注释->创建()。。。。。问题是$project->commentable可能会不时更改为另一个可注释对象的实例。。所以->commentable现在引用的对象在post Method上到达控制器时可能不是同一个对象,你最终做了什么Rafael?这是一个很难回答的问题。。。。我确实成功地让它工作了,但我没有更多的关于我所需要的项目的记忆……相关:[[5.6]允许mpyw·Pull Request#22488·laravel/framework]的可空方法注入(多态路由模型绑定)()