![](/img/trans.png)
[英]Unable to find template “BloggerBlogBundle:Page:index.html.twig”
[英]render to index.html.twig after success registration FOSUserbundle
成功注册后,我将呈现为index.html.twig
因此,在类RegistrationController中的函数registerAction中,我默认拥有:
return $this->render('FOSUserBundle:Registration:register.html.twig', array(
'form' => $form->createView(),
));
所以我将其更改为:
return $this->render('AcmeCovoiturageBundle:Index:index.html.twig'), array(
'form' => $form->createView(),
));
但这引起了错误,因为我在数据库中的index.html.twig中有信息。
所以我将其更改为:
return $this->render(controller("AcmeCovoiturageBundle:Index:index"), array(
'form' => $form->createView(),
));
但我有此错误:尝试从命名空间“ FOS \\ UserBundle \\ Controller”中调用函数“ controller”
请查看并告知我该如何解决此错误
最后,我找到了解决方案。 首先,我尝试从registrationController渲染到另一个页面。 如果我不显示此页面上的数据,那也不是完全错误的。 FOSUserBundle的贡献者之一回答了这个渲染问题,他说,我引用:“登录根本不是由FOSUserBundle处理,而是由Symfony安全组件处理。此捆绑包仅用于提供用户管理”,所以我搜索了换个逻辑。 我创建一个监听器。 我在config.yml中将其命名为(projectname / SourcesFiles / app / config / config.yml)
services:
fos_user.doctrine_registry:
alias: doctrine
sdz_user.registration_complet:
class: Acme\CovoiturageBundle\Services\RegistrationConfirmListener
arguments: [@router]
tags:
- { name: kernel.event_subscriber }
因此,侦听器将从symfony核心侦听事件订阅者。 之后,在包中添加一个文件夹,并添加一个名为RegistrationConfirmListener的php类:
class RegistrationConfirmListener implements EventSubscriberInterface {
private $router;
public function __construct(UrlGeneratorInterface $router) {
$this->router = $router;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents() {
return array(
FOSUserEvents::REGISTRATION_SUCCESS => 'onRegistrationSuccess'
);
}
public function onRegistrationSuccess(\FOS\UserBundle\Event\FormEvent $event) {
$url = $this->router->generate('index');
$event->setResponse(new RedirectResponse($url));
}
}
您将需要FOSUserBundle的用途:
use FOS\UserBundle\FOSUserEvents
use FOS\UserBundle\Event\UserEvent
use Symfony\Component\EventDispatcher\EventSubscriberInterface
use Symfony\Component\HttpFoundation\RedirectResponse
use Symfony\Component\Routing\Generator\UrlGeneratorInterface
请注意,如果不将名称空间放在顶部,则symfony不会识别您的类。
namespace Acme\CovoiturageBundle\Services
您看到“ REGISTRATION_SUCCESS”了吗? 我从registraionAction函数的registrationController中获取以下内容:
$dispatcher->dispatch(FOSUserEvents::**REGISTRATION_COMPLETED**, new FilterUserResponseEvent($user, $request, $response));
因此,现在尝试通过运行以下命令来测试您的监听器是否正常工作:
php app/console container:debug | app_user.registration_complet
您将在控制台上收到以下消息:
[容器]服务sdz_user.registration_complet的信息服务ID sdz_user.registration_complet类别Acme \\ CovoiturageBundle \\ Services \\ RegistrationConfirmListener标签-kernel.event_subscriber()范围容器公共是合成否延迟否同步否抽象否完成。
我没有为登录创建解决方案。 此解决方案进行注册。 我认为这将是相同的逻辑。
这取决于您要引用的“ index.htl.twig”文件所在的位置。 我怀疑它在“ default / index.html.twig”中,因此请尝试以下操作:
return $this->render('default/index.html.twig'), array(
'form' => $form->createView(),
));
实际路径是:app / Resources / views / default / index.html.twig
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.