Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 访问直接URL时发生Laravel和AngularJs SPA错误_Php_Angularjs_Laravel_Single Page Application - Fatal编程技术网

Php 访问直接URL时发生Laravel和AngularJs SPA错误

Php 访问直接URL时发生Laravel和AngularJs SPA错误,php,angularjs,laravel,single-page-application,Php,Angularjs,Laravel,Single Page Application,这可能是个愚蠢的问题,因为我对拉雷维尔还不熟悉。我正在使用angular和laravel制作单页应用程序。我正在尝试从“todo”表中获取所有记录,并在单击“查看所有todo”按钮时将其显示到todo.html。“查看所有TODO”转到“localhost:8000/tasks”URL。当我点击那个按钮时,我得到了所有的待办事项,没问题。但当我试图直接在浏览器上访问那个url时,我从laravel到DoController得到了json数组 这是我的路线/web.php Route::resou

这可能是个愚蠢的问题,因为我对拉雷维尔还不熟悉。我正在使用angular和laravel制作单页应用程序。我正在尝试从“todo”表中获取所有记录,并在单击“查看所有todo”按钮时将其显示到todo.html。“查看所有TODO”转到“localhost:8000/tasks”URL。当我点击那个按钮时,我得到了所有的待办事项,没问题。但当我试图直接在浏览器上访问那个url时,我从laravel到DoController得到了json数组

这是我的路线/web.php

Route::resource('/todo', 'TodoController');
拉威尔TodoController控制器

 public function index()
{
    return Todo::all();
}
这是我的角度代码

myApp.config(['$routeProvider', '$locationProvider',

function ($routeProvider, $locationProvider) {
    $locationProvider.hashPrefix('');

    $routeProvider.when('/', {
        templateUrl: 'views/home.html',
    });
    $routeProvider.when('/todo', {
        templateUrl: 'views/todo.html',
        controller: 'todoController'
    });
    $locationProvider.html5Mode(true);

}]);

myApp.controller('taskController', function($scope, $http) {
$http({
    method: 'get',
    url: 'todo'
}).then(function (response) {
    $scope.about = response.data
},function (error){
    console.log(error, 'can not get data.');
});
});

您知道您也可以从您的路线或控制器返回有说服力的集合吗?它们将自动转换为JSON。试试看

如果要返回html,请在控制器中使用视图

public function index()
{   
    return view('todos')->with('todos',Todo::all());

}

您的angular控制器和Laravel控制器的目标是相同的url。您应该使用Laravel作为API或服务,同时允许angular进行路由。查看此以了解更多信息

谢谢你的回复。但目的不是返回json数组。我想显示html页面,html页面包含包含所有TODO的html表,而不是json数组。你的意思是我必须在api.php中提到所有路由?我的意思是,对于你的laravel路由,你可以有一个前缀,比如说api,这样你的laravel路由就有了yourdomain.com/api/task,你的angular Controller就有了yourdomain.com/task。那样的话,你就更清楚了。是的,我明白了。谢谢但如果我在浏览器中直接访问yourdomain.com/api/task,那么仍然会得到json响应。有没有办法直接从角度路线访问laravel控制器?好的。因此,在angular控制器中,可以使用angular http并将返回json响应的laravel url作为目标。因此,从上面的内容来看,在将laravel路由更改为api/task之后,在angular控制器中,使用$http并指向url\u api/task\u,我希望我能有所帮助。