2

我正在尝试使用 L4 和 Angular 构建应用程序。我在路线上有点挣扎。我正在使用 html5Mode(true) 来获得漂亮的 url。只要我不重新加载,一切都可以正常工作。

如果我用 url 以外的 url 重新加载页面/,L4 会接管并尝试将我发送到相应的页面。我不想要那个。我希望将所有页面路由到 Angular 可以接管的主页。

我找到了一种将所有流量重定向到家庭的方法:

Route::get('{all}', function($uri){

    return View::make('home');

})->where('all', '.*');

唯一的问题是,一旦我尝试使用 Angular 进行请求,它会将主页的 HTML 而不是我需要的资源发回给我。

知道如何解决这个问题吗?

谢谢

4

3 回答 3

2

我也在做同样的事情,我的解决方案是,制作一些分组的 api 路由并以角度调用它。这条路线应该放在你的主要路线之前。

/*
    API Routes
*/

Route::group(array('prefix' => 'api/v1', 'before' => 'auth.basic'), function()
{
    Route::resource('pages', 'PagesController', array('only' => array('index', 'store', 'show', 'update', 'destroy')));
    Route::resource('users', 'UsersController');
});

Route::get('{all}', function($uri){

    return View::make('home');

})->where('all', '.*');

并像api/v1/pages在 Angular js 中一样访问它。如果您不想进行身份验证,可以删除'before' => 'auth.basic'

于 2013-09-26T16:23:34.810 回答
0

我也为此奋斗了几个小时,并想出了一个解决方案。在我的项目中,我使用 angular 来控制实际的视图切换。所以我所做的是在 L4 中定义两个单独的路由组,一个直接从 laravel 的路由系统返回实际页面,另一个返回 angulars 路由系统的 HTML 片段。

这是我的路由示例

//Laravel pages and API routes
Route::get('/', function()
{
    return View::make('hello');
});

Route::get('/register',function(){
    return View::make('registration');
});

//Angular SPA routes(HTML fragments for angulars routing system)
Route::get('/getstarted', function(){
    return View::make('getStarted');
});

Route::get('/terms',function(){
    return View::make('terms');
});

因此,在这种情况下,当您调用“/”时,laravel 会发送您的主页,而 ng-view 会通过 ajax 请求“/getstarted”,它会返回您的 html 片段。希望这可以帮助 :)

于 2013-10-13T06:39:32.693 回答
-1

您使用什么网络服务器软件,服务器端?阿帕奇?Nginx?您必须配置您的 http 服务器以支持您的推送状态应用程序。这是一个可以执行此操作的示例 Apache .htaccess:

# html5 pushState support
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !index
  RewriteRule (.*) index.html [L]
</IfModule>
于 2013-09-26T16:16:18.670 回答