我对PHP和symfony都很陌生,而且我正在查看我的一位同事写的代码。 它是一个简单的查询表格,确认页面。它应该记住用户输入的内容,即使用户从确认pagn返回。 他使用会话来存储发布的数据,并使用Form :: submit来填充用户先前输入的数据(例如姓名,电子邮件地址,邮件正文)。
它有效,但使用这种技术是个好主意吗?这样做有什么缺点吗?
首先,我不能再使用Form :: isSubmitted来检查用户是否提交了表单(因为手动调用submit()会使此标志为true),尽管我仍然可以使用isMethod(' POST' )。
其次,官方doc使用DB而不是session来存储临时变量。 在会话中存储临时数据是好还是坏? https://symfony.com/doc/current/forms.html
我已经在stackoverflow中的某处读过提交将在3.0中删除,但它仍然存在,即使在官方4.0文档中也是如此。
答案 0 :(得分:0)
在会话中存储数据有点短暂。这意味着当用户清除其浏览器缓存或切换到其他浏览器时,例如在移动设备和桌面设备等其他设备上,数据不会存在。
当您将数据存储在数据库中时 - 这对于登录用户来说真正有意义,为了能够正确地将数据关联到它们 - 您可以克服上述问题,但它并没有这样做。与未登录的用户一起工作。此外,这可能意味着更多的工作。
这两种方法都很好,哪种方法更合适,取决于您的使用案例,以及您更关注哪一个缺点。
提交表单时进行了一些更改。最近我认为在$form->isValid()
之前调用$form->isSubmitted()
会给你一个弃用警告。我发现submit()
没有任何变化,但您可以随时查看发布中的UPGRADE-notes。
如果您担心弃用,则应检查日志(通常在var / logs / dev.log中)或Web profiler工具栏(使用app_dev.php
- 入口点时在页面按钮上)。当Symfony弃用某些东西时,它会出现在那里,并且通常会提供有关如何修改代码以便在将来更新时安全的建议。
Symfony遵循语义版本控制,因此仅删除主要版本中不推荐使用的功能(从3到4,将删除许多弃用的东西)。这意味着即使您有弃用警告,您也可以使用次要更新,除非弃用具有严重的安全隐患。尽管如此,一旦你更新,试图摆脱弃用通知对我来说通常是一个很好的做法,以保持工作量更易于管理。