如何在Laravel Controller中使用方法重载?
I am trying to use method overloading feature in my laravel controller class. here is my methods
# 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
}
Here is my route -
// customer balance
Route::get('Customer/Balance', 'CustomerController@createBalance');
Route::get('Customer/Balance/{ID}', 'CustomerController@createBalance');
But it shows the error -
FatalErrorException in CustomerController.php line 45:
Cannot redeclare App\Http\Controllers\CustomerController::createBalance()
Any solution please ?
我正在尝试在laravel控制器类中使用方法重载功能。 这是我的方法 p>
#Load Customer Balance View
public function createBalance()
{
return view('customer.balance');
}
#加载客户余额视图
公共功能createBalance($ CustomerID)
{
//显示已定义客户的余额
}
code> pre>
这是我的路线 - p>
//客户余额
Route :: get('Customer / Balance','CustomerController @ createBalance');
Route :: get('Customer / Balance / {ID}','CustomerController @ createBalance');
code> pre>
但它显示错误 - p>
CustomerController.php第45行中的
FatalErrorException:
无法重新声明App \ Http \ Controllers \ CustomerController :: createBalance()
code> pre>
请问任何解决方案? p>
div>
Consider use default parameters:
public function createBalance($CustomerID=null)
{
if ($CustomerID==null)
return view('customer.balance');
else
// show balance of the the defined customer
}
And change your route to:
Route::get('Customer/Balance/{CustomerID?}', 'CustomerController@createBalance');
Adding a "?" after the argument, Laravel understands you're passing an optional parameter.
You need to have different method names. This doesn't follow basic routing conventions either. The first createBalance method should probably be the index method.
I think createBalance()
method alredy exist in your CustomerController
so you should create new method or different name method and also change in route file with new method name.