从symfony2中的自定义控制器类扩展所有控制器类

时间:2014-06-30 08:55:47

标签: php symfony-2.4

与Codeigniter一样,我们有'核心'文件夹,我们可以在其中定义自己的控制器,如'MY_Controller',并可用于扩展所有类以扩展这个控制器是否有可能在Symfony2中这样做。

在symfony中我想创建类'MY_Controller',它扩展自基类'Controller',我希望控制器中的所有类都从MY_Controller'类扩展

提前致谢...

2 个答案:

答案 0 :(得分:1)

注意:
使用Symfony2时, 强烈 建议您遵循Symfony2编码样式。它与PHP-FIG基本相同,有一两个偏差。所以下划线是类名中的禁忌。除此之外:Symfony非常容易使用,并且完全是OO,因此更改控制器扩展的类就像用extends Controller替换extends AnotherClass一样简单。 但现在,使用自定义控制器的symfony2方式:

您可以做的是创建一个Core捆绑包(此后为CoreBundle)。然后,在此CoreBundle中,定义一个从Symfony Controller组件扩展的控制器。从命令行,在项目根目录中,使用以下命令:

php app/console generate:bundle --namespace=YourNameSpace/CoreBundle --bundle-name=YourNameSpaceCoreBundle

更多选项can be found here
之后,您将在捆绑目录中找到DefaultController类。 (可能在文件夹src/YourNamespace/CoreBundle/Controller中)。然后,设置生成核心控制器:

php app/console generate:controller --controller=YourNameSpaceCoreBundle:Core

有关如何生成核心控制器的更多选项,请参阅the documentation

在您完成自定义控制器的设置后,您可以随意在任何其他捆绑包中使用它:

namespace YourNameSpace\AnotherBundle\Controller;

use YourNameSpace\CoreBundle\Controller\CoreController;

class DefaultController extends CoreController
{//extends from your custom controller
}

就是这样:你已经完成了。

答案 1 :(得分:0)

  • 首先,不要像在PSR-0中那样使用下划线命名该类,当在类名中使用时,每个下划线字符都会转换为目录分隔符。
  • 其次,将您的控制器置于<bundledir>/Controller/
  • 第三,将控制器命名为BaseController,并从中扩展所有其他控制器。
  • 第四,考虑在基本控制器中使用依赖注入而不是耦合功能。