Sonata 管理员搜索功能:尚未设置请求对象
Posted
技术标签:
【中文标题】Sonata 管理员搜索功能:尚未设置请求对象【英文标题】:Sonata Admin search feature : The Request object has not been set 【发布时间】:2018-07-31 22:10:58 【问题描述】:我想在 symfony 迁移到 3.4.2 版本后激活奏鸣曲管理员搜索功能。 我在奏鸣曲块服务中发现了一个问题:
在渲染模板期间引发了异常(“The 请求对象尚未设置”)。
这是奏鸣曲块配置:
奏鸣曲块.yml
sonata_block:
default_contexts: [cms]
blocks:
sonata.admin.block.admin_list:
contexts: [admin]
sonata.admin.block.search_result:
contexts: [admin]
sonata.block.service.text:
sonata.block.service.rss:
有什么解决办法吗?
【问题讨论】:
【参考方案1】:您在使用 SonataTranslationsBundle 吗?这是fixed recently。也许你应该更新?如果不是,请打开一个问题并提供堆栈跟踪。
【讨论】:
我尝试了这个解决方案,但徒劳无功,问题出在 sonata.admin.block.search_result @MohammadTrabelsi 你能在这里给我异常的完整堆栈跟踪或在 github 上打开一个问题 完整堆栈太大:这是简短版本:Twig_Error_Runtime:在渲染模板期间引发了异常(“尚未设置请求对象”)。在 vendor/sonata-project/admin-bundle/src/Resources/views/Core/search.html.twig:39 我打开了一个问题:这是链接:github.com/sonata-project/SonataAdminBundle/issues/4966【参考方案2】:解决办法是重写get请求函数,因为她抛出了异常:
public function getRequest()
if (!$this->request)
throw new \RuntimeException('The Request object has not been set');
return $this->request;
所以我创建了一个扩展抽象管理的类,并使我的管理文件夹中的每个类都从它扩展:
class MYAdmin extends AbstractAdmin
/**
* @inheritdoc
*/
public function getRequest()
if (!$this->request)
return $this->request = $this->getConfigurationPool()->getContainer()->get('request_stack')->getCurrentRequest();
return $this->request;
【讨论】:
以上是关于Sonata 管理员搜索功能:尚未设置请求对象的主要内容,如果未能解决你的问题,请参考以下文章