`
linleizi
  • 浏览: 230269 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Symfony2 FOSUserBundle重写控制器(Controllers)

 
阅读更多
  1. 创建一个子Bundle,继承FOSUserBundle,
    // src/Acme/UserBundle/AcmeUserBundle.php
    <?php
    
    namespace Acme\UserBundle;
    
    use Symfony\Component\HttpKernel\Bundle\Bundle;
    
    class AcmeUserBundle extends Bundle
    {
        public function getParent()
        {
            return 'FOSUserBundle';
        }
    }
     * Symfony2框架只允许一个Bundle有一个子Bundle,无法再创建FOSUserBundle的子Bundle。
  2. 创建一个和FOSUserBundle相同名字的Controller,一种方式继承父Bundle的Controller,继承的话,不需要把父Controller的所有方法重写,如下:
    <?php
    // src/Acme/UserBundle/Controller/RegistrationController.php
    namespace Acme\UserBundle\Controller;
    
    use Symfony\Component\HttpFoundation\RedirectResponse;
    use FOS\UserBundle\Controller\RegistrationController as BaseController;
    
    class RegistrationController extends BaseController
    {
        public function registerAction()
        {
            $form = $this->container->get('fos_user.registration.form');
            $formHandler = $this->container->get('fos_user.registration.form.handler');
            $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');
    
            $process = $formHandler->process($confirmationEnabled);
            if ($process) {
                $user = $form->getData();
    
                /*****************************************************
                 * Add new functionality (e.g. log the registration) *
                 *****************************************************/
                $this->container->get('logger')->info(
                    sprintf('New user registration: %s', $user)
                );
    
                if ($confirmationEnabled) {
                    $this->container->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail());
                    $route = 'fos_user_registration_check_email';
                } else {
                    $this->authenticateUser($user);
                    $route = 'fos_user_registration_confirmed';
                }
    
                $this->setFlash('fos_user_success', 'registration.flash.user_created');
                $url = $this->container->get('router')->generate($route);
    
                return new RedirectResponse($url);
            }
    
            return $this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html.'.$this->getEngine(), array(
                'form' => $form->createView(),
            ));
        }
    }
    * 如果不想继承FOSUserBundle的Controller类,可以直接定义一个Controller,但需要把FOSUserBundle的所有方法全部重写。
分享到:
评论

相关推荐

    Symfony2开发之控制器用法实例分析

    首先,让我们了解Symfony2控制器的基本概念和生命周期。每个HTTP请求首先由前端控制器(如app.php或index.php)处理,前端控制器是应用程序的入口点,负责加载Symfony框架,并将其配置应用到请求上。接着,请求会被...

    Symfony2-FOSUserBundle:带有 FOSUserBundle 的 Symfony2 基本应用程序

    在本项目中,"Symfony2-FOSUserBundle" 是一个基于 Symfony2 v2.1.7 的基础应用,已经预装并配置好了 FOSUserBundle,以便与 MySQL 数据库配合使用。这意味着开发者可以直接使用这个项目模板来快速搭建具备用户管理...

    symfony2常规操作

    在本篇文章中,我们将探讨在Symfony2框架中进行的一些常规操作,包括依赖注入、 Doctrine数据库操作、表单处理、事件监听、命令行工具使用、路由配置、配置文件管理、控制器与视图的交互。 1. **依赖注入**:...

    symfony控制器层

    ### Symfony 控制器层详解 #### 一、概述 Symfony 是一款基于 PHP 的现代 Web 开发框架,以其高度模块化的设计、丰富的组件和强大的社区支持而闻名。在 Symfony 框架中,控制器层扮演着至关重要的角色,它是连接...

    symfony2建立一个完整blog的例子

    在 Symfony2 中,路由是URL到控制器的映射。创建一个新的路由文件,如`src/Resources/config/routing.yml`,并定义访问博客文章列表、创建新文章、查看单篇文章和添加评论的路由。 ### 5. 控制器与视图 在`src/...

    Symfony2 Jobeet Day 2_ The Project PDF

    Symfony2遵循MVC(模型-视图-控制器)架构,以其灵活且可扩展的设计而闻名。Symfony2使用现代的、强大的PHP 5.3+特性,是企业级应用的首选框架。 Jobeet是一个开源的工作板项目,它使用Symfony2框架构建。该项目...

    ayrshireminis:Ayrshire Minis 在 Symfony 2 上重写

    本文将深入探讨如何使用Symfony 2框架重写Ayrshire Minis网站,以及在这个过程中JavaScript的重要性。Symfony 2是一款强大的PHP框架,以其灵活性、可扩展性和高性能著称,而JavaScript作为前端的主要语言,对于构建...

    精通PHP Symfony2

    而对于Symfony2的页面创建、控制器、路由、模板使用、数据库集成(包括Doctrine和Propel)、测试、验证、表单、安全、HTTP缓存、翻译、服务容器和服务性能优化等高级主题也都有所覆盖。这帮助开发者构建出功能完备、...

    Symfony quick tour 2.1

    例如,“第1章:全景图”通过介绍Symfony2背后的一些最重要的概念和展示一个简单项目的实践,让读者快速入门。如果读者之前使用过其他的网络框架,那么在Symfony2中的感觉应该是很自然的。对于新手,这将是一个全新...

    Symfony_metabook_2.0

    2. **控制器(Controller)**: 控制器是处理用户请求并生成响应的主要组件。Symfony文档解释了控制器的工作原理、如何创建页面,以及控制器中常见的操作和最佳实践。文档中还涵盖了如何将控制器定义为服务,这在大型...

    symfony-jsonapi, 用于 Symfony 2和 Symfony 3的JSON API变压器包.zip

    symfony-jsonapi, 用于 Symfony 2和 Symfony 3的JSON API变压器包 Symfony json对于 Symfony 2和 Symfony 3 安装工具使用情况创建映射输出API响应JSON API请求JSON API响应与NelmioApiDocBund

    《Symfony权威指南》

    “核心架构”篇,讲述模型视图控制器(MVC)在symfony中的实现,以及如何用这样的三层结构模型建立页面和应用程序;“特殊功能”篇,解释如何使用symfony加快“漂亮”的URL、表单、验证、Ajax交互、缓存和国际化应用...

    Symfony快速入门

    快速入门的第二部分会详细介绍Symfony2的三个核心概念:The View(视图),The Controller(控制器)和The Architecture(架构)。 视图(The View)是指在Web应用中展示给用户的具体内容。在Symfony框架中,视图...

    symfony API CHM手册

    在Symfony中,API主要包括服务容器、控制器、路由、表单、模板、翻译、事件系统等组件的接口和类。通过API,开发者能够调用框架提供的功能,实现各种复杂的业务逻辑。 **服务容器**是Symfony的核心部分,它负责管理...

    Symfony

    它遵循MVC(模型-视图-控制器)架构模式,提供了一套强大的工具来简化Web开发过程,包括路由、依赖注入、事件系统、表单处理、安全控制等。Symfony的核心理念是分离关注点,提高代码的可重用性和可测试性。 在描述...

Global site tag (gtag.js) - Google Analytics