【问题标题】:Laravel 5.2 to 5.3 - converting routes.php to web and api route files?Laravel 5.2 到 5.3 - 将 routes.php 转换为 web 和 api 路由文件?
【发布时间】:2018-01-21 02:42:16
【问题描述】:

我正在将我的吉他课程网站从 5.2 升级到 5.3。我以前的开发人员有一份全职工作,所以现在我是网站所有者和开发人员...我是一个比开发人员更好的吉他手...

我的网站有一个用于添加吉他课程内容的后端。 routes.php 文件包括以下几行:

function RegisterResourceRoute($route, $name) {
    Route::get($route,              'Api\\'.$name.'Controller@getAll');
    Route::get($route.'/{id}',      'Api\\'.$name.'Controller@get');
    Route::post($route,             'Api\\'.$name.'Controller@post');
    Route::put($route.'/{id}',      'Api\\'.$name.'Controller@put');
    Route::delete($route.'/{id}',   'Api\\'.$name.'Controller@delete');
}

// Api
Route::group(['middleware' => ['api', 'auth', 'admin']], function () {
    Route::group(array('prefix' => 'api'), function() {
        RegisterResourceRoute('file', 'File');
        RegisterResourceRoute('photo', 'Photo');
        RegisterResourceRoute('category', 'Category');
        RegisterResourceRoute('tag', 'Tag');
        RegisterResourceRoute('lesson', 'Lesson');
        RegisterResourceRoute('exercise', 'Exercise');
        RegisterResourceRoute('user', 'User');
    });
    Route::post('/api/email', 'Api\\EmailController@send');

});

然后我在视图中使用的角度相关的js中看到,这个为Exercise资源:

// Exercise
        .when('/exercise', {
            templateUrl: 'views/dashboard/exercise/view-all.html',
            controller: 'ExerciseViewAllController'
        })
        .when('/exercise/create/:lessonId?', {
            templateUrl: 'views/dashboard/exercise/create.html',
            controller: 'ExerciseCreateController'
        })
        .when('/exercise/view/:id', {
            templateUrl: 'views/dashboard/exercise/view.html',
            controller: 'ExerciseViewController'
        })
        .when('/exercise/edit/:id', {
            templateUrl: 'views/dashboard/exercise/edit.html',
            controller: 'ExerciseEditController'
        })
        .when('/exercise/edit/:id/details', {
            templateUrl: 'views/dashboard/exercise/edit-details.html',
            controller: 'ExerciseDetailsController'
        })
        .when('/exercise/edit/:id/photos', {
            templateUrl: 'views/dashboard/exercise/edit-photos.html',
            controller: 'ExercisePhotosController'
        })
        .when('/exercise/delete/:id', {
            templateUrl: 'views/dashboard/exercise/delete.html',
            controller: 'ExerciseDeleteController'
        })

例如,ViewAllController 如下所示:

angular.module('dashboard')
    .controller('ExerciseViewAllController', ['$scope', '$http', function ($scope, $http) {
        $scope.exercises = [];

        $scope.refresh = function () {
            $scope.exercises = [];
            load();
        };

        var load = function () {
            $scope.busy = true;
            $http.get('/api/exercise').then(function (response) {
                $scope.busy = false;
                $scope.exercises = response.data;
            }, function (response) {
                $scope.busy = false;
            });
        };

        load();
    }]);

我试图弄清楚 5.3 如何处理此类路由。例如,在我的后端仪表板中,当我尝试查看练习列表时,我收到 api/exercise 的 404 错误。

所以我在管理路由下创建了 web.php:

Route::resource('api/exercise', 'Api\ExerciseController');

在 api.php 中

Route::group(['prefix' => 'api'], function () { Route::resource('exercise', 'Api\ExerciseController'); });

它现在可以工作了,但是我必须将以前在练习控制器中的 getAll() 函数更改为 index(),否则会出现错误,因为 laravel 正在寻找默认的索引方法。

我宁愿使用默认路由名称让它工作,而且我不知道我添加到 web.php 和 api.php 的内容是否真的是正确的方法。我看到事情似乎奏效了,但我担心我没有看到全貌......

有人能解释一下我会怎么做才能让这些路线以真正的 laravel 5.3 方式工作吗?

谢谢!

【问题讨论】:

  • 您可以使用我的电子邮件与我联系:kamgasimojunior@gmail.com 我是 laravel 开发人员。

标签: laravel laravel-5 laravel-5.3


【解决方案1】:

不记得确切,但我通过此链接从 5.2 升级到 5.3 https://laravel.com/docs/5.3/upgrade 不要被内容淹没。只需搜索您从中得到错误的位。例如路线部分。 希望有帮助

【讨论】:

    猜你喜欢
    • 2017-02-28
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    相关资源
    最近更新 更多