如何为路由中的多个参数实现“ defaults()”-Laravel

时间:2019-06-24 09:59:28

标签: php laravel

因此,我有一个带有两个参数的POST URL,并且我想为两个参数分配默认值。

我知道您可以为具有单个参数的URL实现这种方式:

Route::post('activity-log/datatable/{tag_access?}/{page_access?}',
'SettingsController@datatable_activity_log')
->defaults('tag_access', 'activity-log');

但是我该如何使用看起来像这样的URL:

Route::post('activity-log/datatable/{tag_access?}/{page_access?}',
'SettingsController@datatable_activity_log')

2 个答案:

答案 0 :(得分:3)

您可以通过以下方式实现它:

按您的喜好保留路线:

Route::post('activity-log/datatable/{tag_access?}/{page_access?}','SettingsController@datatable_activity_log')

现在,在控制器功能中,您可以将这些参数设为默认值,

public function datatable_activity_log($tag_access='activity-log', $page_access='activity-log', Request $request){
    // Here write your logic
}

这可能不是实现所需目标的最佳方法,但这是其中一种方法。

答案 1 :(得分:2)

根据我对默认用法的了解,您可以一次执行一项操作:

Route::post('activity-log/datatable/{tag_access?}/{page_access?}',
'SettingsController@datatable_activity_log')
->defaults('tag_access', 'activity-log')
->defaults('page_access', 'defaultValue');

一种替代方法(因为defaults是公开的):

$route = Route::post('activity-log/datatable/{tag_access?}/{page_access?}',
'SettingsController@datatable_activity_log');
$route->defaults = [ 'tag_access' => 'activity-log', 'page_access' => 'defaultValue' ];

我个人最喜欢的是@Sagar Gautam建议使用的默认函数参数。