如何向同一个函数发送不同的参数? (laravel 5.3)
How to send different parameters to the same function? (laravel 5.3)
我的看法是这样的:
...
<a class="btn btn-primary pull-right" style="margin-top: -10px;margin-bottom: 5px" href="{!! route('users.create.year', [$year]) !!}">
Add New
</a>
...
...
@foreach($testArray as $key)
...
<a class="btn btn-primary btn-xs" href="{!! route('users.create.display.year', [$key['display'], $year]) !!}">
<i class="glyphicon glyphicon-plus"></i>
</a>
...
@endforeach
...
我的路线是这样的:
Route::get('users/create/{year}', 'UserController@create')
->name('users.create.year');
Route::get('users/create/{display}/{year}', 'UserController@create')
->name('users.create.display.year');
我的控制器是这样的:
public function create($display = null, $year)
{
echo $display;
echo $year;die();
...
}
当我这样调用 url 时:http://localhost/mysystem/public/users/create/2016
存在这样的错误:
1/1 ErrorException in UserController.php line 314:
Missing argument 2 for App\Http\Controllers\UserController::create()
当我这样调用 url 时:http://localhost/mysystem/public/users/create
/14144499452111901/2016`
结果是这样的:
14144499452111901
2016
为什么我用一个参数调用 url 时会出错?
Route::get('users/create/{year}', 'UserController@create')
->name('users.create.year');
Route::get('users/create/{display}/{year}', 'UserController@create')
->name('users.create.display.year');
你在这里定义了两条路由,只有一个控制器。
public function create($display = null, $year)
{
echo $display;
echo $year;die();
...
}
所以当你做这样的事情时http://localhost/mysystem/public/users/create/2016
它发送给具有多个参数的那个。
解决方案是创建两个控制器,每条路线一个
public function create($display = null, $year)
{
echo $display;
echo $year;die();
...
}
public function create( $year)
{
echo $display;
echo $year;die();
...
}
您应该使用 optional parameters 功能:
Route::get('users/create/{year}/{display?}', 'UserController@create')->name('users.create.year');
只使用一种方法,但带有可选参数:
public function create($year, $display = null)
你也可以在控制器中使用 Request 对象
public function create(Request $request)
{
$request->year;
...
}
我的看法是这样的:
...
<a class="btn btn-primary pull-right" style="margin-top: -10px;margin-bottom: 5px" href="{!! route('users.create.year', [$year]) !!}">
Add New
</a>
...
...
@foreach($testArray as $key)
...
<a class="btn btn-primary btn-xs" href="{!! route('users.create.display.year', [$key['display'], $year]) !!}">
<i class="glyphicon glyphicon-plus"></i>
</a>
...
@endforeach
...
我的路线是这样的:
Route::get('users/create/{year}', 'UserController@create')
->name('users.create.year');
Route::get('users/create/{display}/{year}', 'UserController@create')
->name('users.create.display.year');
我的控制器是这样的:
public function create($display = null, $year)
{
echo $display;
echo $year;die();
...
}
当我这样调用 url 时:http://localhost/mysystem/public/users/create/2016
存在这样的错误:
1/1 ErrorException in UserController.php line 314:
Missing argument 2 for App\Http\Controllers\UserController::create()
当我这样调用 url 时:http://localhost/mysystem/public/users/create
/14144499452111901/2016`
结果是这样的:
14144499452111901
2016
为什么我用一个参数调用 url 时会出错?
Route::get('users/create/{year}', 'UserController@create')
->name('users.create.year');
Route::get('users/create/{display}/{year}', 'UserController@create')
->name('users.create.display.year');
你在这里定义了两条路由,只有一个控制器。
public function create($display = null, $year)
{
echo $display;
echo $year;die();
...
}
所以当你做这样的事情时http://localhost/mysystem/public/users/create/2016
它发送给具有多个参数的那个。
解决方案是创建两个控制器,每条路线一个
public function create($display = null, $year)
{
echo $display;
echo $year;die();
...
}
public function create( $year)
{
echo $display;
echo $year;die();
...
}
您应该使用 optional parameters 功能:
Route::get('users/create/{year}/{display?}', 'UserController@create')->name('users.create.year');
只使用一种方法,但带有可选参数:
public function create($year, $display = null)
你也可以在控制器中使用 Request 对象
public function create(Request $request)
{
$request->year;
...
}