我试图从使用代码点火器切换到 laravel 但是我注意到在我遵循的每个教程中,我们总是在 laravel 中的 route.php 中声明路由,这与在代码点火器中它具有默认路由(如http://localhost/projname/controller/method
. 有没有办法像 CI 一样进行自动路由,或者我只是错过了 laravel 路由规则中的某些内容?这非常重要,因为我们都知道大型网站有超过 50 个链接,如果我们要声明,这将是一件很麻烦的事情这些都在 laravel 的 routes.php 中。
问问题
2591 次
2 回答
9
有没有办法像 CI 一样进行自动路由
为什么是的。在您的路线文件中Route::controller(Controller::detect());
现在在您的控制器类中,确保每个函数名称都与action_
. 因此,如果您的函数名称homepage()
是action_homepage()
请记住,您可以使用 restful 控制器名称get_homepage()
和post_homepage()
. 但是你必须在你的控制器中声明这个类变量public static $restful = true;
于 2013-05-29T01:24:17.093 回答
0
//create controller name like UserController
//Steps:
// 1. route matched to either post or get request,
// 2. used web/controllerName/MethodName/Parameter1/parameter2 ..
// all parameters received in an array as $params. web/ is used like a route
// prefix. If no method is passed it will call index method
// 3. explode the parameter
// 4. called the controller with method and paramteres passed
// 5. parameters are matched for regex allowing alphanumeric and slash (url)
// 6. passed through guest middleware
// created controller as mentioned below:
// class SomeController extends Controller
// {
// public function index($param1,$param2,$param3){
// return 'index'.$param1.$param2.$param3;
// }
// }
Route::match(['get','post'],'/web/{controller}/{method?}/{params?}', function ($controller, $method='index', $params='') {
$params = explode('/', $params);
$controller = app()->make("\App\Http\Controllers\\". ucwords($controller).'Controller' );
return $controller->callAction($method, $params);
})->where('params', '[A-Za-z0-9/]+')->middleware('guest');
于 2018-03-24T08:53:48.963 回答