【问题标题】:Using AngularJS $routeparams with Laravel在 Laravel 中使用 AngularJS $routeparams
【发布时间】:2015-11-08 18:27:08
【问题描述】:

在 Laravel 之上使用 AngularJS,假设我在 Laravel 中有这条路线:

Route::get('/admin/', function() { return View::make('pages.writer'); });

它制作了一个加载AngularJS组件的视图,包括$routeProvider,并且配置是这样的:

 $routeProvider.when('/writer/:publicationName?', {
   templateUrl: '/templates/writer.html',
   controller: 'WriterCtrl',
   caseInsensitiveMatch: true
 }).otherwise({
   templateUrl: '/templates/library.html',
   controller: 'LibraryCtrl'
 });

如果我调用 URL:/admin/writer/My-Favorite-Publication,我会收到 Laravel 错误,因为路由不存在。有没有办法告诉 Laravel Angular 路由何时接管特定 URL(即 /admin/ 之后的任何内容),以便我可以使用 $routeParams

【问题讨论】:

  • 你启用html5mode了吗?
  • @PankajParkar 是的,我有
  • 我认为通过将<base href="/admin"> 放在你的html head 标签上可以解决问题
  • @PankajParkar 我也这样做了!我或许应该澄清一下 URL 是直接调用的,而不是通过 $location.path()
  • @PankajParkar 这些都不起作用。在将任何内容返回到浏览器或 angularjs 应用程序之前,它首先需要通过 Laravel,并且应用程序在执行 Angular 应用程序之前的这个阶段中断

标签: php angularjs laravel routing laravel-5


【解决方案1】:

您需要定义一个 catch-all 路由,该路由将返回运行 AngularJS 应用程序的基本视图,并让 AngularJS 处理其余部分路由。

这样就可以了:

Route::get('/admin/{ignore?}', function() { 
  return View::make('pages.writer'); 
})->where('ignore', '.*');

这将使以 /admin 开头的所有内容都匹配此 Laravel 路由。

【讨论】:

    猜你喜欢
    • 2013-11-27
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多