【发布时间】: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