2011-10-16 19 views
1

我有一个表格,其中用户可以输入一个位置的地址,以及公用事业公司,该地址提供服务。该实用程序数据被关联到建筑:制作相关型号可选

Location hasMany Utility 

独资公用事业的范围内,该name场是必需的,有说明尽可能多的验证。但是,在一个位置的上下文中,任何实用信息都是可选的。用户可以选择不输入数据时,输入一个位置,这只会表明他们不想将该位置与我们跟踪的任何或所有公用事业公司关联。

使用FormHelper,不过,检测验证,并根据需要在实地得到显着。我希望保留独立输入实用程序数据的实例的验证,但要删除位置表单上所需的指示符。我知道我可以用任何方法破解这个(例如,通过javascript等去除required类),但我想知道是否有一种干净的方式来使用Cake API来做到这一点。我没有看到任何明显的东西,所以我希望别人来过这里,并找到一个干净简单的解决方案。

谢谢。

+0

没有测试;但你也许可以尝试使用'fieldList'参数为'只会验证()'方法......参见[这里](http://book.cakephp.org/view/1182/Validating-Data-from-the-Controller )。可能不会处理相关的数据,但是〜 – Ross

回答

1

您可以询问用户他们想要多少实用工具创建窗体前添加,也可以动态使用JS添加实用纪录输入(后来是更多的工作要做,而不是防错的前任的)。

观点的例子(如果你想这样做在1个视图):

if (empty($this->data){ 
    // a form to ask how many utility records the users want to create. 
}else{ 
    // generate the form based on user input. 
} 

我假设你知道在控制器做。

+0

因此,绕过FormHelper并给予我对'required'类的完全控制。也是我正在考虑的“黑客”。我希望有一种方法可以告诉'Utility'模型禁用对绘制表单请求的验证。也许我可以直接修改'$ validates'属性... –

+0

不,你仍然使用formhelper来生成表单。您只需知道创建实用程序时创建多少条记录。 –

0

我将一个类添加到表格元素是optionnal,和使用该类覆盖“必需的”指示符。

+0

啊,这是我考虑的黑客之一,但我希望有一个API我不知道做这个干净。谢谢。 –