несколько пользовательских полей с использованием xml в joomla

#jquery #xml #joomla

#jquery #xml #joomla

Вопрос:

Мне нужно создать несколько пользовательских полей с использованием xml в модуле в joomla 3.0. Я сделал что-то вроде этого, показанного ниже. мой mod_category.xml код файла для полей выглядит следующим образом :

 <fields name="params">
    <fieldset name="protection" addfieldpath="/modules/mod_careercategory/include/" label="tagelement">
    <field name="headerTitle" type="text" default="" label="HEADER_TITLE" description="HEADER_TITLE_DESC"/>
    <field name="Title" type="tagelements" label="TITLE" id="Title"/>
</fieldset>
</fields>
 

и мой tagelements.php код — это :

 jimport('joomla.form.formfield');

class JFormFieldTagElements extends JFormField
{
    protected $type = 'tagelements'; //the form field type

 protected function getInput()
 {

     return '<input type="text" name="'.$this->name.'" id="'.$this->id.'" label="Title"/><br />'.
        '<input type="text" name="Link" id="Link" label="Link"/><br />'.
        '<input type="text" name="Order" id="order" label="order"/><br />'.
        '<input type="button" id="btnAdd" name="addmore" value="Add more">
         <input type="button" id="btnDel" value="Remove" />';               


 }
 

У меня есть две кнопки, добавить и удалить, которые с помощью jQuery добавят больше этих полей при нажатии. Поля будут удалены при нажатии кнопки удаления.

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

Я хочу, чтобы все поля были сохранены. Кто-нибудь может мне помочь?

Комментарии:

1. Пожалуйста, покажите свой код jQuery, который вы используете для добавления / удаления полей

2. Как вы планируете хранить динамически создаваемые поля в статической базе данных? Один из способов — использовать json для кодирования полей и сохранения их в поле свойств в базе данных

3. $this->name имеет строку, подобную jform , поэтому вам также нужно добавить ее вручную / программно к названию элементов Link и Order . Это становится, скажем <input type="text" name="jform[Link]" id="jform_Link" label="Link"/>

Ответ №1:

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

Вероятно, сработало бы, если бы ваше основное поле (с именем «$this-> name») было скрытым полем, которое ваш jquery затем заполняет другими данными при отправке (возможно, в формате json).

Ответ №2:

Если вам нужны данные для всех трех доступных серверных частей, они действительно должны быть тремя отдельными текстовыми полями в вашем файле определения формы XML. Ваше пользовательское поле просто объединяет три стандартных текстовых поля в одно, но, как отмечалось в предыдущем постере, пользовательские поля в Joomla ориентированы на обработку одного поля.

«Лучшее» решение зависит от того, что вы хотите сделать с данными и где это делается на стороне сервера кода.