如何在PHP路由中使用Angular 4?

时间:2017-08-31 12:24:16

标签: php angular routes

我在Angular 4上创建了一个空白的新项目(带有angular-cli),以便尝试将它与PHP路由一起使用,我正在使用Phroute Fast route

在尝试之前,我曾经用param调用整个文件来调用特定的函数,如下所示:

角色服务

apiGet(): any {
    return this._http.get('api/server/user.php?action=getUser');
}

我尝试安装Phroute但是没有用,当我尝试像下面的代码那样调用它时,我收到以下错误:

apiGet(): any {
    return this._http.get('api/user');
}
  

获取http://localhost/api/index.php net :: ERR_TOO_MANY_REDIRECTS

文件夹结构

  • API /
    • server / (used to call files with extensions)
    • 供应商/
    • 的index.php
  • 的index.html
  • bundle.js
  • [..其他角文件..]

的index.php

require 'vendor/autoload.php';

function processInput($uri) {
    $uri = implode('/', array_slice(
        explode('/', $_SERVER['REQUEST_URI']), 3
    ));

    return $uri;
}

function processOutput($response){
    echo json_encode($response);    
}

$router = new Phroute\RouteCollector(new Phroute\RouteParser);

$router->get('user', function(){ 
    return 'Hello, PHRoute!';   
});

$dispatcher = new Phroute\Dispatcher(router);

try {
    $response = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], processInput($_SERVER['REQUEST_URI']));
} catch (Phroute\Exception\HttpRouteNotFoundException $e) {
    var_dump($e);      
    die();
} catch (Phroute\Exception\HttpMethodNotAllowedException $e) {
    var_dump($e);       
    die();
}

processOutput($response);

的.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} api
    RewriteRule ^ /api/index.php [L,R]

    # This code needs to be used in order to enable refresh
    # and redirects on the Angular routes
    RewriteBase /
    RewriteRule ^index.html$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.html [L]
</IfModule>

注意:请记住,我对这个PHP路线概念很新,所以欢迎任何其他建议!

所以我想知道如何正确配置它以使其工作?我没有找到关于这个主题的任何教程,所以对我来说非常困惑。

0 个答案:

没有答案