为什么在所有子资源路由方法中都需要路由组中的参数

时间:2017-11-02 18:45:53

标签: php laravel laravel-5 laravel-5.4 laravel-routing

我有一个路由组,其参数如下:

Route::prefix('/website/{account}')->group(function () {
        Route::group(['middleware' => ['auth']], 
            Route::resource('/member', 'MemberController');
        });
    });

如您所见,路由组中有account个参数。

现在要显示member-create页面,我将其添加到MemberController

public function create ($account)
        {
            return view('admin/pages/members/members-create',compact('account'));
        }

现在,当我想要创建一个表单,向store这样的MemberController函数发送请求时(在member-create.blade.php中):

{!! Form::open(array('action' =>['MemberController@store'],  'id'=>'createMemberForm')) !!}
拉拉维尔说:

Missing required parameters for [Route: member.store] [URI: website/{account}/member].

那是因为,我必须在$account函数中添加store参数。事实上因为我在路由分组中使用了一个参数,我必须始终先将一个值作为该参数发送到create函数然后从那里传递给store函数,当然,这需要很多我的时间。

有没有办法解决这个问题,其中$ account参数自动或以任何其他方式发送给函数

1 个答案:

答案 0 :(得分:1)

我认为没有简单的方法可以自动发送。你显然可以使用:

{!! Form::open(array('url' =>route('member.store', ['account' => 'account_value']),  'id'=>'createMemberForm')) !!}

将有效值传递给路由,如果需要可以创建帮助方法但是没有其他合理的方法可以自动执行。当您在路线中使用参数时通常意味着您需要这样,所以如果您想自动填写它,也许您应该考虑是否真的需要它?