繁体   English   中英

Symfony2-所有控制器的方法

[英]Symfony2 - Methods for all controllers

我希望在Ruby on Rails中开发我的Symfony2应用程序,以在所有控制器中都提供可用的方法。 在RoR控制器中,只需继承ApplicationController之后,即可在其中放置所有方法。 但是Symfony的方式是什么,这里的良好实践是什么?

我想要的功能实际上非常简单,类似于以下内容:

public function showAction()
{
    $user = $this->container->get('security.context')->getToken()->getUser();
}

我可以在此处加载当前用户,并且我希望在执行每个操作之前终止此功能,而无需将代码复制到每个控制器中。

您可以为此使用服务。

ACME / DemoBundle /为MyService / MyService.php

<?php
namespace Acme/DemoBundle/MyService

class MyService {

   public function myFunction(){
        [...]
   }

}

ACME / DemoBundle /资源/配置/ services.yml

services:
    my_service:
        class: Acme/DemoBundle/MyService/MyService

或.xml版本

ACME / DemoBundle /资源/配置/的services.xml

<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services
        http://symfony.com/schema/dic/services/services-1.0.xsd"
>
    <services>
        <service id="my_service" class="Acme\DemoBundle\MyService\MyService">

        </service>
    </services>
</container>

然后在控制器中

极致/ DemoBundle /控制器/ MyController.php

$this->container->get("my_service")->myFunction();

要使其在所有捆绑软件中都可用,只需相应地更新每个捆绑软件的服务配置文件即可。

文档在这里可用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM