我们说我有一本书Entity
与Author
实体有一个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重复,提供了出色的解决方案。
答案 0 :(得分:0)
会话无法存储对象。因此,您需要序列化和反序列化您的对象。见http://symfony.com/doc/current/components/serializer.html