重复表单上的表单字段

时间:2014-02-11 13:47:24

标签: php laravel laravel-4

我是Laravel的新手,并试图让我了解如何让用户重复一个字段。

我有一个允许用户创建具有标题和描述的基本页面的表单,我想让用户在他们选择使用“添加更多”按钮创建另一个标题和描述字段时。

他们允许他们重新订购这些字段集合。

干杯, 克里斯

2 个答案:

答案 0 :(得分:4)

这似乎不是关于Laravel,而是关于一般DB Schema,PHP和UI实践的更多内容。因此,由于这需要广泛的答案,我将主要使用最佳实践概念来回答,以避免过于冗长(使用Laravel作为上下文)。

<强>前端

为了能够动态添加另一组字段,您需要使用表单数组:

<div class="field-set">
{{ Form::text('fields[0]["title"]', Input::old('fields[0]["title"]')) }}
{{ Form::textarea('fields[0]["description"]', Input::old('fields[0]["description"]')) }}
</div>

<a href="#" class="add-more-link">+ Add more</a>

你的'add-more-link'应该有一个javascript触发器,它将复制并附加'field-set'元素,并在表单数组中附加索引的迭代

(e.g. fields[1]["title"], fields[2]["title"]) 

注意:您可以在没有JS的情况下执行此操作,但是您必须使用一些参数重新发布该页面,该参数会增加要创建的字段数量,然后在生成DOM生成字段集时循环多次。

为了允许重新排序,我建议jQuery UI's Sortable。注意:您可以在没有JS的情况下通过为每个字段集向上或向下递增来完成此操作,但需要在后端进行更多处理。


返回端

在处理保存的模型中,通过Input :: get('fields')获取数据会将其存储到PHP数组中,您可以迭代它来验证,解析和存储数据。

对于您的数据库架构,您需要考虑创建任意数量的新字段。这意味着可能需要一个将在用户上加入的单独表。 (列:id,user_id,标题,描述)

在Laravel中,您可以在用户模型上定义“拥有多个关系”,以获取任何给定用户的所有标题和描述。 http://laravel.com/docs/eloquent#relationships

答案 1 :(得分:0)

我不确定你是否正确地使用了表格,尽管你的问题很难说清楚。

如果要创建新资源(带标题和说明),则不要添加新表单字段。您可以使用“添加更多”按钮,但此按钮只会生成您表单的另一个实例,然后可以发布。

但说实话,你提出的问题很难说明你的问题是什么......