为啥 EventSubscriberInterface 不起作用如果我想获得一个 html 页面
Posted
技术标签:
【中文标题】为啥 EventSubscriberInterface 不起作用如果我想获得一个 html 页面【英文标题】:Why EventSubscriberInterface don't work If I want to get a html page为什么 EventSubscriberInterface 不起作用如果我想获得一个 html 页面 【发布时间】:2021-12-16 02:57:17 【问题描述】:我在我的项目中添加了一个 EventSubscriberInterface 来重定向用户无权访问并且用户未登录,他们无权访问某些页面和 url,我的代码工作但我的 EventSubscriberInterface 不起作用如果我想要获取页面 html,即使我在 _construct 中添加 die() 也没有发生任何事情
页面html示例
/public/modules/story.html
我的代码
public function onKernelRequest(RequestEvent $event)
$request = $event->getRequest();
$RequestUri = strtok($request->getRequestUri(), '?');
if (strpos($RequestUri, '/public/modules') !== false)
if(empty($_SESSION['_sf2_attributes']['_security.last_username']))
//return new RedirectResponse($this->urlGenerator->generate('app_login'));
$route =$this->urlGenerator->generate('app_login');
$event->setResponse(new RedirectResponse($route));
else
$connection = $this->_em->getConnection();
$statement = $connection->prepare("SELECT * FROM eurotest_users eu
LEFT JOIN user_range ur On eu.id = ur.user_id
LEFT JOIN user_version uv On eu.id = uv.user_id
LEFT JOIN eurotest_module em On ur.range_id = em.module_range_id AND uv.version_id = em.module_version_id
where eu.email ='".$_SESSION['_sf2_attributes']['_security.last_username']."' and em.folder='".$RequestUri."' ");
$statement->execute();
$statement->fetchAll();
$counter = $statement->rowCount();
if($counter == 0)
$route =$this->urlGenerator->generate('app_home');
$event->setResponse(new RedirectResponse($route));
【问题讨论】:
【参考方案1】:如果您尝试直接访问 HTML 文件,Symfony 进程将被绕过。
您可以尝试将此 HTML 页面呈现为通过路由器的视图,例如 this documentation
这将触发所有 Symfony 的事件
【讨论】:
HTML 页面不是静态的 您的页面上有分析工具栏吗? 不,我没有 “HTML 页面不是静态的”——这是什么意思?通常,这是任何 php 脚本的主要区别 我有很多html页面(当我上传一个新模块时可以有一个或多个html页面)以上是关于为啥 EventSubscriberInterface 不起作用如果我想获得一个 html 页面的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?