使相关模型可选

时间:2011-10-16 12:30:59

标签: cakephp cakephp-1.3

我有一个表单,用户可以输入位置地址以及为该地址提供服务的公用事业公司。效用数据与建筑物相关联:

Location hasMany Utility

仅在实用程序的上下文中,name字段是必需的,因此验证表明了这一点。但是,在位置的上下文中,任何实用程序信息都是可选的。用户可以选择在输入位置时不输入该数据,该位置仅表示他们不想将该位置与我们跟踪的任何或所有公用事业公司相关联。

但是,使用FormHelper检测验证并根据需要标记字段。我想保留对独立输入实用程序数据的实例的验证,但删除位置表单上的所需指标。

我知道我可以通过多种方式破解它(例如通过javascript删除required类等),但我想知道是否有一个干净的方法来执行此操作Cake API。我没有看到任何明显的东西,所以我希望其他人来到这里,找到一个干净,简单的解决方案。

感谢。

3 个答案:

答案 0 :(得分: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.
}

我假设您知道在控制器中要做什么。

答案 1 :(得分:0)

我会在form元素中添加一个可选的类,并使用该类覆盖“required”指示符。

答案 2 :(得分:0)

实际上有一个Cake解决方案,使用错误参数

$this->Form->input('Model.field', array('error' => false));

To disable error message output set the error key to false.