扩展控制器 - 什么都不会发生

时间:2017-08-08 14:43:34

标签: symfony controller bundle

我正试图解决这个问题很长一段时间。

我安装了Sonata用户软件包,我用它来管理用户和个人资料版本等等。

但我需要覆盖Sonata Profile Controller。

如果我理解正确(我是Symfony的完美初学者),我必须扩展SonataUserBundle(使用easy extend bundle完成)。

所以,当我宣布一个新的控制器时,没有任何反应。甚至没有错误信息。

有什么想法吗?

这是我的文件

[BUNDLE EXTENSION FILE]

   // ApplicationSonataUserBundle.php

    namespace Application\Sonata\UserBundle;

    use Symfony\Component\HttpKernel\Bundle\Bundle;

    class ApplicationSonataUserBundle extends Bundle
    {
        /**
         * {@inheritdoc}
         */
        public function getParent()
        {
            return 'SonataUserBundle';
        }
    }

[控制器文件]

namespace Application\Sonata\UserBundle\Controller;
use Sonata\UserBundle\Controller\ProfileFOSUser1Controller as BaseController;

class ProfileFOSUser1Controller extends BaseController {

    public function editProfileAction() {
    die('toto');
    $user = $this->getUser();
    if (!is_object($user) || !$user instanceof UserInterface) {
        throw new AccessDeniedException('This user does not have access to this section.');
    }

    $form = $this->get('sonata.user.profile.form');
    $formHandler = $this->get('sonata.user.profile.form.handler');

    $process = $formHandler->process($user);
    if ($process) {
        $this->setFlash('sonata_user_success', 'profile.flash.updated');

        return $this->redirect($this->generateUrl('sonata_user_profile_edit'));
    }

    return $this->render('SonataUserBundle:Profile:edit_profile.html.twig', array(
            'form' => $form->createView(),
            'breadcrumb_context' => 'user_profile',
    ));
    }

}

2 个答案:

答案 0 :(得分:1)

你有die('toto');作为控制器方法的第一行,是不是要终止下面的所有代码?

答案 1 :(得分:1)

好的,我自己找到了答案:)

我忘了指定我需要的课程

use FOS\UserBundle\Model\UserInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Sonata\UserBundle\Controller\ProfileFOSUser1Controller as BaseController;

我清除了缓存,一切正常!

全部谢谢!