2015-05-05 6 views
0

Я использую сонату MongoDB AdminBundle для моего заднего конца, в моем случае, мне нужно, чтобы создать новое действие для моей модели пользователя (отправив письмо к нему), я последовал за документацию буквально https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_custom_action.html но я получил странную ошибку:Невозможно использовать CRUDController

Compile Error: Cannot use Sonata\AdminBundle\Controller\CRUDController as Controller because the name is already in use

и это мой CRUDController Код:

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Session\UserBundle\Document\User; 
use Doctrine\Common\Persistence\ObjectManager; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\RedirectResponse; 
use Sonata\AdminBundle\Controller\CRUDController as Controller; 

class CrudController extends Controller 
{ 
    public function inscriptionAction() 
    { 
     $mail = '[email protected]'; 
     $pinCode = '1klm8'; 
     $sender = '[email protected]'; 

     $dm = $this->get('doctrine_mongodb')->getManager(); 
     $userManager = $this->container->get('fos_user.user_manager'); 

     $user = $userManager->createUser(); 
     $user->setEmail($mail); 
     $user->setUsername($mail); 
     $user->setPlainPassword($pinCode); 
     $user->setEnabled(true); 
     $userManager->updateUser($user, true); 


     $message = \Swift_Message::newInstance() 
      ->setSubject('Test de recrutement') 
      ->setFrom($sender) 
      ->setTo($mail) 
      ->setCharset('utf-8') 
      ->setContentType('text/html') 
      ->setBody(
       $this->renderView(
        'ATSQuizzBundle:Default:SwiftLayout/createUser.html.twig', 
        array('user' => $user, 'pinCode' => $pinCode) 
       ) 
      ); 

     $this->get('mailer')->send($message); 
     $this->addFlash('sonata_flash_success', 'mail sent to the candidate'); 

     return new RedirectResponse($this->admin->generateUrl('list')); 
    } 
} 

любой знает происхождение этой ошибки, пожалуйста?

ответ

0

Вы уже импортировали класс Controller. И поэтому вам нужно переименовать его во втором случае. Переопределение ваш потребительной блок с рядом:

use Session\UserBundle\Document\User; 
use Doctrine\Common\Persistence\ObjectManager; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\RedirectResponse; 
use Sonata\AdminBundle\Controller\CRUDController as Controller; 

Как вы видите, я удалил первое вхождение Controller класса, который не используется в вашем коде. Но если у вас есть другой код в этом файле, который может использовать «старый» Controller, я бы рекомендовал вам переименовать последний Controller в BaseController и расширить свой класс от BaseController.

+0

О да, это было плохо. спасибо @ Майкл –

Смежные вопросы