在FOSRest控制器中注入服务

时间:2015-08-31 08:28:01

标签: symfony

我是symfony的新手,并尝试使用FOSRest Bundle创建REST api。另外,我想在我的控制器中使用flysystem库作为服务。这很简单

.controller('MapCtrl', function($scope, $ionicLoading, $compile) {
  function initialise() {   
    function onSuccess(position){
      var myLatlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
      var mapOptions = {
        zoom: 15, 
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP, 
      }
      var map = new google.maps.Map(document.getElementById('map'), mapOptions);
      var marker = new google.maps.Marker({
        position: myLatlng,
        map: map,
      });
      $scope.map = map; 
    }
    function onError(error){
      alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
    }
    navigator.geolocation.getCurrentPosition(onSuccess, onError);   
  }
  google.maps.event.addDomListener(window, 'load', initialise);

 });

这很好用,但我的想法是将此服务注入FileController,这样我就可以在我的控制器中的每个方法中使用$ filesystem服务。

我读到它,我必须将我的控制器作为服务,但后来出了问题。注射的正确方法是什么。

1 个答案:

答案 0 :(得分:1)

我们使用这样的东西:

<强> YourBundle /资源/配置/ services.yml

    controller.file:
    class: YourBundle\Controller\FileController
    arguments:
        - @yourFileService 
        - @service_container

<强> YourBundle /控制器/ FileController.php

/**
 * @Route("/file", service="controller.file")
 */
class FileController extends Controller
{

    /**
     * @var Filesystem
     */
    private $filesystem;

    /**
     * @param Filesystem $filesystem
     * @param $container
     */
    public function __construct(
        Filesystem $filesystem,
        $container
    ) {
        $this->filesystem = $filesystem;
        $this->container = $container;
    }