2017-12-27 221 views
0

这可能是一个愚蠢的问题,因为我是Laravel的新手。我正在使用angular和laravel来制作单页应用程序。我试图从“todos”表中获取所有记录,并将它们显示在todo.html上点击“查看所有待办事项”按钮。 “查看所有Todos”转到“localhost:8000/tasks”URL。当我点击那个按钮时,我得到了所有的待办事项没有问题。但是当我尝试直接在浏览器上访问该URL时,我从laravel Todocontroller获得了json数组。Laravel和AngularJs SPA访问直接URL时出错

这里是我的路线/ web.php

Route::resource('/todo', 'TodoController'); 

Laravel 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.'); 
}); 
}); 

回答

0

你知道你还可以返回雄辩集合从你的路线或控制器?他们将自动转换为JSON。试一试!

https://laravel.com/docs/5.5/responses

如果你想返回HTML,在你的控制器

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

} 

https://laravel.com/docs/5.5/views

+0

感谢您的回复。但目的不是返回json数组。我想显示和HTML页面包含所有待办事项而不是JSON数组的HTML表格 – Aamish

+0

所以你必须使用一个视图https://laravel.com/docs/5.5/views –

0

您从您的角度控制器,以及你的Laravel控制器针对同一网址中使用的视图。您应该使用Laravel作为API或服务,而您允许角度做路由。检查这个更多的信息。 Laravel API routes

+0

你的意思是我必须提到所有的API路线。 PHP的? – Aamish

+0

我的意思是你的laravel路线,你可以有一个前缀可以说_api_所以你的laravel路线有_yourdomain.com/api/task_和角度控制器可以有_yourdomain.com/task_。那样,你有更清晰的。 –

+0

是的,我明白了。谢谢。但是,如果我直接在浏览器中访问yourdomain.com/api/task,那么我仍然会得到json响应。有没有办法直接从角度路线访问laravel控制器? – Aamish