Как избежать дублирования кода между php и javascript - PullRequest
2 голосов
/ 04 апреля 2011

У меня есть страница php с формой для добавления людей в небольшую группу.

Для каждого добавляемого человека существует несколько элементов формы, каждый из которых назван в соответствии с номером человека. Например:

<div class="user">
<input type="text" name="user1LastName" />
...
</div>
<div class="user">
<input type="text" name="user2LastName" />
...
</div>

Для каждого человека в базе данных страница php заполняет разделы формы.

Чтобы добавить дополнительных людей, пользователь может щелкнуть значок «+», после чего страница использует jQuery для динамического заполнения нового. Для этого я просто добавляю новый HTML-файл div к существующей форме. Это означает, что страница javascript содержит все ту же HTML-разметку (которая будет добавлена), что и страница php.

Это похоже на ненужное дублирование кода. Всякий раз, когда я что-то изменяю на странице php, я также должен изменить это в коде javascript.

Есть ли какой-нибудь общий способ избежать такого дублирования кода? Единственное, о чем я могу думать, - это использовать jQuery для получения HTML-кода из уже существующего div. Но в этом случае значения полей формы для пользователя n появятся в новом коде для пользователя n + 1.

Спасибо.

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Capisci:)?

<div class="user" id="user_1">
<input type="hidden" name="uid[0]" value="1"/>
<input type="text" name="lastname[0]" value="user480029"/>
...
</div>

<div class="user" id="user_2">
<input type="hidden" name="uid[1]" value="2"/>
<input type="text" name="lastname[1]" value="arto"/>
...
</div>

Теперь при добавлении другого поля просто ...

<div class="user" id="user_3943094103945">
<input type="hidden" name="uid[]" value=""/>
<input type="text" name="lastname[]" value=""/>
...
</div>

Затем вы выполняете итерацию через $_POST[] и делаете то, что хотите.

У вас есть идентификатор пользователя в .user, поэтому, удаляя пользователя, вы можете удалить эту часть HTML (это больше для UX), что более важно, у вас нет сотен переменных, а всего лишь несколько массивов, которые вы можете повторить в один цикл. Надеюсь, вы поняли. Приветствия.

0 голосов
/ 04 апреля 2011

Код php должен дать javascript «прототип», который можно изменить с помощью javascript.Таким образом, даже если нет пользователей, JavaScript все равно будет работать.В этом примере явно не хватает большого количества кода (например, форм), но он должен дать вам представление.Я не проверял это, потому что я предполагаю, что вы все равно должны сделать много модификаций.

...