【发布时间】:2011-05-14 13:20:25
【问题描述】:
我正在尝试向我的 CakePHP 表单动态添加字段,但似乎我使用的每种方法都有自己无法解决的缺点。这是我尝试过的:
不要添加新输入,只需用逗号分隔单个输入中的值。这似乎很容易,但在尝试分解输入并将每个值保存在数据库的新行中时会出现一些问题。但是当我不得不编辑这些值时我放弃了这个想法......收集所有值并将它们内爆到输入中,然后当我保存时检查所有值是否仍然存在,如果没有,则从表中删除相应的行.. .要做的工作很多。
我尝试使用 JS 动态创建新输入。但是在这里,我偶然发现了 2 个问题:Security 组件,它正在抛出黑洞尝试(我真的需要这个组件来检查表单的完整性)以及如果验证失败,我的输入将与它们的值一起消失的事实.我必须补充一点,单个模型可能有无限的字段,因此输入将类似于
name=[Model][14][field], name=[Model][17][field],因此我不能限制安全组件不验证这些特定输入(我只有在使用 JS 添加它们时才知道它们的 ID ,无论如何,在安全组件构建其数据之后)。使用 PHP 添加字段(因此,在添加新字段后重新加载页面),但我似乎不知道如何在另一个现有字段之后添加一个字段,以及如何维护验证错误时输入的数据。
非常感谢任何建议!
谢谢!
【问题讨论】:
-
不能肯定地说,但我认为不可能使用安全组件并向表单添加字段。保护表单的重点是校验和并确保没有添加或删除任何字段。您是否可以尝试在没有安全组件的情况下执行此操作并找到另一种方法来确保您的表单被锁定?
-
好的,假设我不使用安全组件。那么如何验证所有添加的字段,并在表单未验证时检索它们的值?
-
这是表单验证,在模型中完成。与安全组件所做的非常不同。我会将安全组件放在一边,除非您的应用程序绝对必须拥有它,并且只需验证模型中的表单输入。这里有更多关于验证输入的信息:book.cakephp.org/view/125/Data-Validation
-
问题是我的表单中有一个主模型,然后是所有关联的类别。此外,这些类别可以包含多个值,因此要保存的类别数量是动态的,我不知道如何准确检索填充了哪些类别以及它们的 id (
Model.0.field,Model.1.field, .. .,Model.n.field)