在Laravel路由文件中包含这么多行的路由可以吗?

时间:2018-11-05 08:39:11

标签: php laravel

在我的laravel路由文件(routes / web.php)中,路由的行太多。我认为有办法使它变得更加收集。例如,Auth :: routes()是代码行,但包含大约3-4条路由。那么如何在我的web.php中创建像这样的东西?

4 个答案:

答案 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();

Take a look on this question / Source

答案 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