1

如何在 XAMPP 上设置 Laravel 和 Angular.js 文件夹结构。我了解创建 RESTFULL Laravel API。

我一直在开发一个应用程序,但是当我在浏览器中输入类似“联系人/约翰”的地址时,我得到了一个 Laravel 视图。

当我转到“/”然后单击像 John 这样的一些联系人时,我得到了正确的表格和浏览器地址栏,显示“contacts/john”,我刷新页面并再次获得 Laravel View。

4

2 回答 2

3

我了解 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 的路由器。

于 2014-12-07T23:45:55.530 回答
-1

基本上这是我使用 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'),

...
于 2015-05-12T07:35:39.923 回答