SlimPHP - 有没有办法使用CorsSlim和Slim v3?

时间:2016-02-26 07:59:30

标签: php angularjs rest http-headers slim

我一直坚持用前端的AngularJS和后端的SlimPHP制作REST API。当我只使用$ http.get和$ http.post时,everuthing是可以的,但不适用于$ http.delete和$ http.put。 我设置了标题:

$app = new \Slim\App();

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');

但这没有帮助,所以我发现有像CorsSlim这样的东西,但当我写这个:

require __DIR__ . '/vendor/autoload.php';

$app = new \Slim\App();

$app->add(new \CorsSlim\CorsSlim());

即使在通过作曲家安装slim和corsslim之后,我也立即得到了以下问题。

致命错误:第5行/wwwpath/vendor/palanik/corsslim/CorsSlim.php中找不到“Slim \ Middleware”类

在他们的CorsSlim GitHub上https://github.com/palanik/CorsSlim我发现他们将他们的苗条限制在版本<3.0,因此它与我的Slim不兼容。

所以,问题是:有没有办法用Angular和Slim v3制作带有get / post / put / delete请求的REST API,或者我必须将整个后端部分重新制作为v2才能使其工作? 提前谢谢。

2 个答案:

答案 0 :(得分:4)

请务必使用CorsSlim的{​​{3}}:

{
  "require": {
    "palanik/corsslim": "dev-slim3"
  }
}

然后你可以简单地使用它:

<?php
require ('./vendor/autoload.php');

$app = new \Slim\Slim();

$app->add(new \CorsSlim\CorsSlim());
?>

答案 1 :(得分:0)

但不要忘记添加选项:

$corsOptions = array(
  "origin" => "*",
  "exposeHeaders" => array("Content-Type", "X-Requested-With", "X-authentication", "X-client"),
  "allowMethods" => array('GET', 'POST', 'PUT', 'DELETE', 'OPTIONS')
);

$cors = new \CorsSlim\CorsSlim($corsOptions);

$app->add($cors);