2014-02-11 5 views
1

Я новичок в Laravel и пытаюсь понять, как разрешить пользователю повторять поле.Повторяющиеся поля формы на форме

У меня есть форма, которая позволяет пользователю создать базовую страницу с названием и описанием, я бы хотел, чтобы пользователь тогда, если они выбирают, создает другое название и поле описания, используя кнопку «Добавить больше» ,

Они позволяют им переупорядочивать эти коллекции полей.

Приветствия, Chris

ответ

4

Это, кажется, меньше о Laravel и больше об общей БД схеме, 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> 

Ваш «надстройку более-ссылку» должен иметь яваскрипт триггера, который будет дублировать и добавить элемент «поля набора» с итерацией индекса в виде массиве

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

примечания: Вы ки n делать это без JS, но вам придется перепрограммировать страницу с помощью некоторого параметра, который увеличивает количество создаваемых полей и затем циклически повторяется при рендеринге наборов полей в генерации DOM.

Для обеспечения переупорядочения я рекомендую jQuery UI's Sortable. Примечание. Вы можете выполнить это без JS, добавив POST вверх или вниз для каждого набора полей, но в фоновом режиме потребуется больше обработки.


Back-конец

В модели, где вы справляетесь сохранить, захват данных с помощью ввода :: получить («поля») будет хранить его в PHP массив, который вы можете перебирать для проверки, анализа и хранения данных.

Что касается вашей схемы БД, вам нужно будет учесть создание любого количества новых полей. Это означает, что, вероятно, потребуется отдельная таблица, которая будет объединена с пользователями. (Столбцы: id, user_id, название, описание)

В Laravel вы можете определить a Has Many Relationship для модели пользователей, которая будет захватывать все заголовки и описания для любого данного пользователя. http://laravel.com/docs/eloquent#relationships

0

Я не уверен, что вы используете формы правильно, хотя его немного трудно сказать, от вас вопрос.

Если вы хотите создать новый ресурс (с заголовком и описанием), вы не добавите новые поля формы. У вас может быть кнопка «добавить еще», но эта кнопка просто порождает другой экземпляр вашей формы, который затем можно будет опубликовать.

Но если честно, то вопрос так vaugue его трудно сказать, что ваша проблема ...

Смежные вопросы