搜索过滤器存储在会话中时出现Symfony错误

时间:2016-11-30 20:09:19

标签: forms symfony doctrine-orm session-variables

我们说我有一本书EntityAuthor实体有一个ManyToOne关系。

在列出所有图书的网页上,我有一个搜索表单,其中包含字段'作者 。 我将搜索表单的数据存储在名为searchFilter的对象(非实体,未保留)中。 我创建了一个SearchFilterType,其中我使用了 EntityType类来显示作者的选择列表,因此可以使用此作者搜索所有书籍。

当我访问另一个页面然后返回搜索页面时,我希望记住我的上一次搜索,这就是为什么我将searchFilter对象存储在中的原因会话

$request->getSession()->set('searchFilter', $searchFilter);

但是当我回到搜索页面时,我收到错误:

Entities passed to the choice field must be managed. Maybe persist them in the entity manager?

我的问题

我是否必须将searchFilter对象转换为实体才能保留它,或者是否有更简单的方法?我不希望我的searchFilter永远存在,会话时间就足够了。

编辑:

我认为我的问题与this one重复,提供了出色的解决方案。

1 个答案:

答案 0 :(得分:0)

会话无法存储对象。因此,您需要序列化和反序列化您的对象。见http://symfony.com/doc/current/components/serializer.html

并查看此simple implementation example