定义路线投掷控制器方法未找到laravel 4

时间:2014-08-29 18:21:10

标签: php angularjs laravel

我在routes.php文件中定义了一个路由但是当我从我的角度应用程序发出ajax请求时,我收到此错误

{"error":{"type":"Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException","message":"Controller method not found.","file":"C:\\xampp\\htdocs\\tedxph\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Controllers\\Controller.php","line":290}}

这是我的路线档案

/*
|--------------------------------------------------------------------------
| Api Routes
|--------------------------------------------------------------------------
*/

Route::group(array('prefix' => 'api'), function() {
    //Auth Routes
    Route::post('auth/login', 'ApiUserController@authUser');
    Route::post('auth/signup', 'ApiUserController@registerUser');
    /* Persons */
    Route::group(array('prefix' => 'people'), function() {

        Route::get('{id}', 'ApiPeopleController@read');
        Route::get('/', 'ApiPeopleController@read');
    });
    /* Events */
    Route::group(array('prefix' => 'events'), function() {

        Route::get('{id}', 'ApiEventsController@read');
        Route::get('/','ApiEventsController@read');
    });
});

chrome web inspector Same post request in a rest client app on chrome 从Chrome上的其他客户端应用访问相同的网址(http://localhost/site/public/api/auth/signup)不会出现任何错误,可能是错误的?

这是我控制器的角度代码

$rootScope.show('Please wait..registering');
                API.register({email: email, password: password})
                .success(function (data) {
                    if(data.status == "success") {
                        console.log(data);
                        $rootScope.hide();
                    }
                })
                .error(function (error) {
                    console.log(error)
                    $rootScope.hide();
                })

更多角度代码

angular.module('tedxph.API', [])
    .factory('API', function ($rootScope,  $http, $ionicLoading, $window) {
    //base url
    var base = "http://localhost/tedxph/public/api";

    return {
        auth: function (form) {
            return $http.post(base+"/auth/login", form);
        },

        register: function (form) {
            return $http.post(base+"/auth/signup", form);
        },

        fetchPeople: function () {
            return $http.get(base+"/people");
        },

        fetchEvents: function() {
            return $http.get(base+"/events");
        },
    }
});

2 个答案:

答案 0 :(得分:3)

有助于查看您用于制作角度请求的代码以及来自Chrome Network -> XHR记录器的标题信息,但我的第一个猜测是Angular使用GET方法而不是POST方法发送AJAX请求。尝试更改Agular以发送明确的POST或更改routes.php,以便auth/signup响应GETPOST个请求。

更新查看您的屏幕截图,AJAX请求返回错误500.应该将您的laravel.log文件或PHP / webserver错误日志中记录的信息记录为何错误正在发生。我猜你的Angular请求会发送你的Chrome / REST-app所做的不同信息,并触发出现错误的代码路径。

答案 1 :(得分:1)

解决了问题,我的控制器在控制器类中调用了一个未定义的方法。 正确地重命名方法,请求现在正常工作,感谢大家的意见。