在没有模型绑定的情况下将对象传递给路由参数
Pass an object to a route parameter without model binding
我有这样的路线:
Route::post('{object}', 'CommentController@store')->name('store');
我想像这样将一个对象作为参数传递给我的表单操作:
<form action="{{ route('comment.store', $object) }}" method="post" id="comment--form"></form>
问题来了
如果我如您所知传递我的查询对象,我将获得查询对象的 ID
如果我传递这样的东西: {{ route('comment.store', (new app\anyObject())) }}
我会得到异常并且由于某些多态性原因我不能使用模型绑定因为对象可以是任何对象所以我想知道我的问题是否有任何解决方案
PS
我有一个多态评论系统,我不知道它是否是装饰设计模式,但我想通过我的界面动态保存评论,所以我想像这样动态保存评论:
public function store(Request $request, $object)
{
// comments() is an implementation of an interface
$object->comments()->create([
'name' => auth()->check() ? $request->user()->fullName() : $request->name,
'email' => $request->user()->email ?? $request->email,
'comment' => $request->content,
]);
}
但是我无法传递对象,因为参数是否可以通过路由或任何其他想法或解决方案传递它?
谢谢
您不能在 url 中传递任何对象数组或 form-data。您可能需要考虑在您的方法中执行 base64_encode 然后解码。这可以解决您的问题。
我有这样的路线:
Route::post('{object}', 'CommentController@store')->name('store');
我想像这样将一个对象作为参数传递给我的表单操作:
<form action="{{ route('comment.store', $object) }}" method="post" id="comment--form"></form>
问题来了
如果我如您所知传递我的查询对象,我将获得查询对象的 ID
如果我传递这样的东西: {{ route('comment.store', (new app\anyObject())) }}
我会得到异常并且由于某些多态性原因我不能使用模型绑定因为对象可以是任何对象所以我想知道我的问题是否有任何解决方案
PS
我有一个多态评论系统,我不知道它是否是装饰设计模式,但我想通过我的界面动态保存评论,所以我想像这样动态保存评论:
public function store(Request $request, $object)
{
// comments() is an implementation of an interface
$object->comments()->create([
'name' => auth()->check() ? $request->user()->fullName() : $request->name,
'email' => $request->user()->email ?? $request->email,
'comment' => $request->content,
]);
}
但是我无法传递对象,因为参数是否可以通过路由或任何其他想法或解决方案传递它?
谢谢
您不能在 url 中传递任何对象数组或 form-data。您可能需要考虑在您的方法中执行 base64_encode 然后解码。这可以解决您的问题。