AngularJS:从(api rest)Symfony的url结果中获取数据

时间:2017-07-06 15:38:29

标签: angularjs rest symfony

我正在尝试使用AngularJS从我的Restful api symfony中检索数据,但是我收到此错误“错误:[$ http:badreq] Http请求配置网址必须是字符串或$ sce可信对象”。

这是我的Symfony控制器:

$agent = $this->get('doctrine')
        ->getRepository('CERAgentBundle:Agent', 'agent')
        ->findByCode($employeeID);

    $session = new Session();
    $session->set('agent', $agent);

    $formatted = [
        'civilite' => $agent[0]->getCivilite(),
        'prenom' => $agent[0]->getPrenom(),
        'nom' => $agent[0]->getNom(),
        ];

    return $formatted;
}

给我: result

这是我的AngularJS控制器:

angular.module('frontProfilDeveloppementApp')
.controller('AboutCtrl', function ($scope, $http, $sce){
  var url = $sce.trustAsResourceUrl('http://localhost:8000/index');
  $http.get({
      method:'GET',
      url:url})
      .success(function (data) {
          $scope.result = data;
      });

});

我的角度观点:

<div ng-app="frontProfilDeveloppementApp" ng-controller="AboutCtrl">

<p>Today's welcome message is:</p>

<h1>{{result.nom}}</h1>

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

查看SCE的文档,您似乎并未将其用于其预期用途。 SCE更多的是将原始html / css从受信任的源呈现到DOM中,而不必将其解析为漏洞,因为它被视为可信任的。对于URL,您可以使用SCE将其安全地绑定到模板中的某个位置,但是您的用例似乎不合适,为什么不使用字符串?

如果有的话,您可能希望将SCE用于检索的实际内容,而不是用于检索内容本身的URL。

答案 1 :(得分:0)

我不确定您使用的是什么版本的Angular,但已弃用成功且您的参数对$ http.get请求无效。你的代码应该是这样的:

// I didn't actually test this but it should work like this, or similar.  
//Put the method in your domain object itself and it will be called automatically.

def afterInsert(){
    this.refresh()
}