我有两张桌子A和B ......
A的字段:(id,companyID)
B的字段:(id,product,qty)
我必须将一个companyID传递给表单并在表中创建一个新行。但是,我还需要通过此表单传递一串项目及其数量。但是我不知道该怎么做,因为html中的Form会对它进行类型检查,它也会失败,因为Model只期望一个companyID而不是一串项目。如何传递这条信息,以便我可以在控制器中访问它?我需要它,所以我可以查询其他数据。
编辑。 (这就是html的样子)
@(orderForm: Form[Order])
@form(routes.CustomersController.submitOrder) {
@inputText(orderForm("depotID"))
<input type="submit" value="Create" class="btn btn-large btn-mobile-block btn-blue">
}
但是,我需要一个额外的输入字段,我可以输入一个值,然后控制器可以访问。
答案 0 :(得分:1)
您不仅限于将单个变量(例如表单)传递给视图。例如,您可以将products : List[Product]
(包含您的项目和数量)作为第二个变量传递给您的表单。通常我会有一个主要表单和支持变量 - 不提交支持信息,它只是以某种方式支持表单。例如。在视图中:
@(companyForm:Form[Company], products:List[Product])
在控制器中,语句如
Ok(views.html.company.add(companyForm, Product.list())
您没有提供大量信息,因此很难确定这是否正好回答您的问题。看一下你的代码会更有帮助。另外,请查看我发现非常有用的Play samples和Scala Forms page。
编辑:如果您希望将额外的项目(例如Seq[Product]
)从视图传递到控制器,那么您可以使用包含该列表的自定义案例类,并让您的控制器或模型将其拆分进入实际的模型案例类。例如。
case class ComputerProduct(id: Int, companyId: Int, products: Seq[Product])
val computerProductForm: Form[ComputerProduct] = Form(mapping(
"id" -> number,
"companyId" -> number,
"products" -> seq(mapping(
"id" -> number,
"product" -> text,
"quantity" -> number)(Product.apply)(Product.unapply)))
(ComputerProduct.apply)(ComputerProduct.unapply))