特殊控制器中用于身份验证的不同 Twig-Layout?
Different Twig-Layout for Authentication in special controller?
我打开一个带有 iFrame 的模式,它提供一个特殊控制器的受限页面。因此,当我未登录时,iFrame 重定向到一般登录路径,这实际上扩展了标准布局文件。
现在,我想要实现的是,如果用户未登录并打开模式,login/registration 页面应该扩展不同的布局(没有导航栏等)。
那么,只有当用户通过模式重定向到它时,我才能为身份验证视图设置不同的布局?有什么建议吗?
谢谢!
我会传递来自 IFrame 的请求参数,让控制器知道请求来自模式,例如path/to/your/page?ref=modal-iframe
:
然后在控制器中我会检查请求参数是否存在且正确或用户是否已登录。在这种情况下,你继续输出你的模板,否则重定向到一般登录路由。
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class MyController extends Controller
{
/*
* @Template("YourBundle:User:login_registration.html.twig")
*/
public function myAction(Request $request)
{
$securityContext = $this->container->get('security.context');
if (($request->get('ref') && $request->get('ref') == 'modal-iframe') ||
$securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
return array();
}
else {
return new RedirectResponse($this->generateUrl('login'));
}
}
}
然后模板将负责加载正确的布局,具体取决于用户是否登录:
{% extends (app.user ? "layout1.html" : "layout2.html") %}
我打开一个带有 iFrame 的模式,它提供一个特殊控制器的受限页面。因此,当我未登录时,iFrame 重定向到一般登录路径,这实际上扩展了标准布局文件。
现在,我想要实现的是,如果用户未登录并打开模式,login/registration 页面应该扩展不同的布局(没有导航栏等)。
那么,只有当用户通过模式重定向到它时,我才能为身份验证视图设置不同的布局?有什么建议吗?
谢谢!
我会传递来自 IFrame 的请求参数,让控制器知道请求来自模式,例如path/to/your/page?ref=modal-iframe
:
然后在控制器中我会检查请求参数是否存在且正确或用户是否已登录。在这种情况下,你继续输出你的模板,否则重定向到一般登录路由。
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class MyController extends Controller
{
/*
* @Template("YourBundle:User:login_registration.html.twig")
*/
public function myAction(Request $request)
{
$securityContext = $this->container->get('security.context');
if (($request->get('ref') && $request->get('ref') == 'modal-iframe') ||
$securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
return array();
}
else {
return new RedirectResponse($this->generateUrl('login'));
}
}
}
然后模板将负责加载正确的布局,具体取决于用户是否登录:
{% extends (app.user ? "layout1.html" : "layout2.html") %}