2 回答

TA貢獻1797條經(jīng)驗 獲得超6個贊
你可以在你的路由中添加閉包函數(shù)來實現(xiàn)這一點。
Route::get('ajax/{method}', function($method){
$app = app();
$controller = $app->make('App\Http\Controllers\AjaxController');
return $controller->callAction($method, $parameters = array());
});
現(xiàn)在,調(diào)用如下get_comments方法:
localhost:8000/ajax/get_comments
注意:確保您的控制器在app/Http/Controller/目錄中。

TA貢獻1909條經(jīng)驗 獲得超7個贊
Route 方法(get
等)可以使用以下模式post
接受它們的第二個參數(shù)作為字符串ControllerName@methodName
。
{method}
您可以從請求路徑中檢索參數(shù)并將其附加到 Route 方法的第二個參數(shù)。即,像'ControllerName@'. 'methodName'
嘗試以下操作:
假設{method}
將是請求路徑中的第二段。[如果不更改參數(shù)中的值segment()
。]
嘗試以下操作:
Route::post('/ajax/{method}', 'AjaxController@'.(Request::segment('2')))->name('ajax-request');
請注意:
如果您選擇將 URL 參數(shù)用作方法名稱,則如果用戶能夠更改指定路徑以外的請求路徑,則可能會引發(fā)運行時異常。
考慮以下場景:
您AjaxController
只有方法get_comments()
和get_deleted_comments()
.
如果請求是/ajax/get_comments
或/ajax/get_deleted_comments
則它們的相應方法將起作用。但是,如果 request 類似于/ajax/get_xyz
并且您沒有get_xyz
在您的方法中命名的方法,AjaxController
那么BadMethodCallException
將拋出 a 。
- 2 回答
- 0 關注
- 126 瀏覽
添加回答
舉報