我是Laravel的新手,并试图让我了解如何让用户重复一个字段。
我有一个允许用户创建具有标题和描述的基本页面的表单,我想让用户在他们选择使用“添加更多”按钮创建另一个标题和描述字段时。
他们允许他们重新订购这些字段集合。
干杯, 克里斯
答案 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)
我不确定你是否正确地使用了表格,尽管你的问题很难说清楚。
如果要创建新资源(带标题和说明),则不要添加新表单字段。您可以使用“添加更多”按钮,但此按钮只会生成您表单的另一个实例,然后可以发布。
但说实话,你提出的问题很难说明你的问题是什么......