我正在尝试在laravel控制器类中使用方法重载功能。这是我的方法
# Load Customer Balance View
public function createBalance()
{
return view('customer.balance');
}
# Load Customer Balance View
public function createBalance($CustomerID)
{
// show balance of the the defined customer
}
这是我的路线 -
// customer balance
Route::get('Customer/Balance', 'CustomerController@createBalance');
Route::get('Customer/Balance/{ID}', 'CustomerController@createBalance');
但它显示错误 -
FatalErrorException in CustomerController.php line 45:
Cannot redeclare App\Http\Controllers\CustomerController::createBalance()
有任何解决方案吗?
答案 0 :(得分:3)
考虑使用默认参数:
public function createBalance($CustomerID=null)
{
if ($CustomerID==null)
return view('customer.balance');
else
// show balance of the the defined customer
}
并将您的路线更改为:
Route::get('Customer/Balance/{CustomerID?}', 'CustomerController@createBalance');
在参数后添加“?”,Laravel知道你传递了一个可选参数。
答案 1 :(得分:1)
您需要具有不同的方法名称。这也不遵循基本的路由约定。第一个createBalance方法应该是索引方法。