在我的laravel路由文件(routes / web.php)中,路由的行太多。我认为有办法使它变得更加收集。例如,Auth :: routes()是代码行,但包含大约3-4条路由。那么如何在我的web.php中创建像这样的东西?
答案 0 :(得分:1)
您可以在App/Providers/RouteServiceProvider.php
文件中注册其他路由文件。默认情况下,它包含API路由和Web路由。您要做的就是创建一个函数mapXyzRoutes()
(例如)并模仿mapWebRoutes()
函数中的代码。然后,将函数调用添加到RouteServiceProvider文件的map()
函数中。
您可以在此处添加中间件,前缀和名称空间,这确实有助于保持干净的路由文件。
当然,您也需要在/routes
目录中创建新文件。
答案 1 :(得分:0)
没有看到您的代码,给您答复并不容易,但是您可以检查一下:
https://laravel.com/docs/5.7/controllers#resource-controllers
例如,编写此Route::resource('photos', 'PhotoController');
将为您提供6条使用模型的路线。
如果您在模型上使用经典的“ CRUD”路线,这将非常有用。
答案 2 :(得分:0)
您可以在控制器中创建一个静态函数来定义要与控制器关联的路由。
static function routes() {
Route::group(array('prefix' => 'product'), function() {
Route::get('/{id?}', array('as' => 'product.index', 'uses' => 'ProductController@index'));
});
}
然后这样称呼它:
\App\Http\Controllers\ProductController::routes();
答案 3 :(得分:-1)
隐式控制器
Laravel使您可以轻松定义一条路由来处理控制器中的每个动作。首先,使用Route :: controller方法定义路由:
Route::controller('users', 'UserController');
controller方法接受两个参数。第一个是控制器处理的基本URI,第二个是控制器的类名。接下来,只需将方法添加到您的控制器中,并以它们响应的HTTP动词作为前缀:
class UserController extends BaseController {
public function getIndex()
{
//
}
public function postProfile()
{
//
}
public function anyLogin()
{
//
}
}
索引方法将响应由控制器处理的根URI,在本例中为用户。
如果控制器操作包含多个单词,则可以使用URI中的“破折号”语法访问该操作。例如,对UserController进行的以下控制器操作将响应用户/管理员配置文件URI:
public function getAdminProfile() {}
有关更多信息,请参见-Implicit Controllers