如何使用包继承覆盖的部分包吗

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.0,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何使用包继承覆盖的部分包吗

使用第三方包时,你可能会遇到一种情况你想覆盖一个文件与文件的第三方包在一个你自己的包。ob娱乐下载Symfony提供了一个非常方便的方式覆盖控制器、模板和其他文件包的资源/目录中。

例如,假设你安装FOSUserBundle,但你想覆盖它的底部layout.html.twig模板,以及它的一个控制器。还假设您有自己的AcmeUserBundle要覆盖文件。首先注册FOSUserBundle的“父”你的包:

1 2 3 4 5 6 7 8 9 10 11 12
/ / src / Acme / UserBundle / AcmeUserBundle.php名称空间Acme\UserBundle;使用ob娱乐下载\组件\HttpKernel\\;AcmeUserBundle扩展{公共函数getParent(){返回“FOSUserBundle”;}}

通过这个简单的改变,你现在可以覆盖的几个部分FOSUserBundle只需创建一个具有相同名称的文件。

请注意

尽管方法名称,没有父/子关系
包,它只是一种扩展和覆盖现有的包。

压倒一切的控制器

假设您想添加一些功能获取registerActionRegistrationController生活在FOSUserBundle。为此,创建自己的RegistrationController.php文件,覆盖包的原始方法,改变其功能:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/ / src / Acme / UserBundle /控制器/ RegistrationController.php名称空间Acme\UserBundle\控制器;使用”丛书\UserBundle\控制器\RegistrationController作为BaseController;RegistrationController扩展BaseController{公共函数获取registerAction(){美元响应=::获取registerAction ();/ /……定制的东西返回美元响应;}}

提示

取决于严重需要改变行为,你可能会调用父:获取registerAction ()用你自己的或完全取代其逻辑。

请注意

压倒一切的控制器以这种方式只包是指控制器使用标准FOSUserBundle:登记:登记语法在路线和模板。这是最好的练习。

最重要的资源:模板、路由、验证等

大多数资源也可以被覆盖,简单地通过创建一个文件在同一地点你的父母包。

例如,它需要覆盖的很常见FOSUserBundlelayout.html.twig模板,以便它使用您的应用程序的基本布局。住在自文件资源/视图/ layout.html.twigFOSUserBundle,您可以创建自己的文件在同一位置AcmeUserBundle。ob娱乐下载Symfony将忽略的文件内的生活FOSUserBundle完全,并使用您的文件。

这同样适用于路由文件,验证配置和其他资源。

请注意

最重要的资源只能当你的参考资源@FosUserBundle /资源/ config /路由/ security.xml方法。如果你是指资源不使用@BundleName捷径,他们无法以这种方式被覆盖。

谨慎

翻译文件不工作在上面描述的一样。读如何覆盖包的一部分吗如果你想学习如何重写翻译。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。