如何在 XAMPP 上设置 Laravel 和 Angular.js 文件夹结构。我了解创建 RESTFULL Laravel API。
我一直在开发一个应用程序,但是当我在浏览器中输入类似“联系人/约翰”的地址时,我得到了一个 Laravel 视图。
当我转到“/”然后单击像 John 这样的一些联系人时,我得到了正确的表格和浏览器地址栏,显示“contacts/john”,我刷新页面并再次获得 Laravel View。
我了解 Angular 通过 AJAX 从服务器请求路由,然后通过 HTML5 历史记录/pushstate 方法将浏览器的 URL 栏设置为新位置?
如果是这样,当您通过页面重新加载请求 URL 时,它会被 Laravel 路由。然后,Laravel 只提供您通过路由(有时是纯 JSON)配置的视图。这就是您想要的,但仅适用于 Angular 的 AJAX 调用。
我建议您isAJAX
为您的路线添加一个过滤器。在您filter.php
声明此过滤器中:
Route::filter('isAJAX', function()
{
if (!Request::AJAX()) return Redirect::to('/')->with(array('route' => Request::path()));
});
然后将您只希望通过 AJAX 访问的所有路由放入一个组中。在你的routes.php
:
Route::group(array('before' => 'isAJAX'), function()
{
Route::get('contacts/{name}', ContactController@index); // Or however you declared your route
... // More routes
});
这样,只有 Angular 的 AJAX 调用从数据库返回结果。每个手册页重新加载都被路由回“/”,并将变量route
设置为请求的路由。然后你必须选择这条路由并用它启动 Angular 的路由器。
基本上这是我使用 Angular 作为我的 API 使用者时的路由配置
// HOME PAGE ===================================
// we don't need to use Laravel Blade
// we will return a PHP file that will hold all of our Angular content
// We'll put all of our angular file on the public folder
Route::get('/', function() {
View::make('index'); // will return app/views/index.php
});
// API ROUTES ==================================
Route::group(array('prefix' => 'api'), function()
Route::resource('comments', 'CommentController',
array('only' => array('index', 'store', 'destroy')));
});
// CATCH ALL ROUTE =============================
// all routes that are not home or api will be redirected to the frontend
// this allows angular to route them
App::missing(function($exception) {
return View::make('index');
});
由于我们会将所有的 Angular 代码放在 laravel 的公共文件夹中,因此我们还需要更改 laravel 获取视图的方式。
// app/config/view.php
...
// make laravel look in public/views for view files
'paths' => array(__DIR__.'/../../public/views'),
...