在这种情况下,我无法理解如何使用 Symfony 表单验证:
我正在制作一个保存化学化合物的表格,使用化学公式作为字符串输入。该输入(例如“H2O”)被数据转换为化学元素集合(“H”、“H”、“O”),该集合与新生成的字符串表示(“H2O”)一起保存为公式。这确保了公式的有效性,并且不能保存例如“OH2”,因为公式的自动生成考虑了这些问题并将其更改为“H2O”。我不想公开访问 Compound->setFormula(),因为这会导致与包含的元素不一致。
现在,我想确保诸如“H2Oxxxx”之类的输入没有被保存为“H2O”,而没有注意到输入实际上与找到的公式不同,而“OH2”应该被接受并保存为“H2O”。我正在尝试为此使用约束“isValidCompound”和验证器“isValidCompoundValidator”。现在的(简单?)问题是:如何从 isValidCompoundValidator 访问 POST 数据,以便将自动创建的公式与其进行比较?通常,您可以使用 $compound->getFormula() 访问它,因为它会自动填充表单数据。就我而言,出于上述原因,它只能通过使用找到的元素来填充。
这种设置是否有意义,我是否应该尝试使用 $request->request->all(); 直接访问 POST 数据?或者不同的课程设置更可取?
非常感谢!