CakePhp路由干扰AngularJS路由

时间:2015-09-17 13:24:54

标签: angularjs cakephp cakephp-3.0 angularjs-routing

好的,我正在处理使用CakePhp(v3)和AngularJS的问题。我想纯粹使用CakePhp来托管我的JSON Web服务。我有这个工作和路由前缀API。我遇到的问题是让Html 5路由与Angular一起使用。例如,如果我转到http://localhost/appname/home,我希望Angular拦截这条路线而不是CakePhp。目前,如果我这样做,CakePhp会抱怨HomeController不存在。我发现这个堆栈溢出post允许我在保持/ api / *路由的同时获得Angular Hashtag路由功能,但我真的不喜欢让我的路由看起来像http://localhost/appname/#/home。我觉得应该有一个.htaccess更改,我可以让Cake处理默认的URL路径(即:http://localhost/因此默认打开home.ctp)但是否则只查找http://localhost/api/ *前缀路线。不幸的是,我确实尝试添加RewriteRule ^/api/*而没有运气。我通常不在Apache / PHP中工作,所以我很难找到解决这个问题的方法。另外,我确保在httpd.conf文件中启用了重写模块。这是我当前的routes.php文件,显示了API前缀以及在命中主机的根目录时显示home.ctp的默认路由。非常感谢来自经验丰富的* AMP开发人员的任何指导!

<?php

use Cake\Core\Plugin;
use Cake\Routing\Router;

Router::defaultRouteClass('Route');

Router::prefix('api', function ($routes) {
    $routes->extensions(['json', 'xml']);
    $routes->resources('Users');
    $routes->resources('UserInfo');
    Router::connect('/api/users/register', ['controller' => 'Users', 'action' => 'add', 'prefix' => 'api']);
    Router::connect('/api/userinfo/create', ['controller' => 'UserInfo', 'action' => 'add', 'prefix' => 'api']);
    $routes->fallbacks('InflectedRoute');
});

Router::scope('/', function ($routes) {
    $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
    $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);
    $routes->fallbacks('InflectedRoute');
});

Plugin::routes();

1 个答案:

答案 0 :(得分:1)

也许我误解了你的问题,但是当请求到达服务器时,是不是已经太晚了?如果你想要“有角度拦截”路线,解决方案需要在客户端完成,而不是在.htaccess文件中。因此,您将拥有将/ appname / home路由到正确文件的有角度路由。