将对象传递给路径参数而不进行模型绑定

时间:2018-03-09 20:48:40

标签: php laravel laravel-5 laravel-5.5

我有这样的路线:

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,
        ]);
    }

但是我无法传递一个对象,因为无论如何都要通过路径或任何其他想法或解决方案传递它?
感谢。

1 个答案:

答案 0 :(得分:0)

您无法在网址中传递任何对象数组或表单数据。您可能需要考虑在您的方法中执行base64_encode然后解码。这可以解决您的问题。