De com_contact uitbreiden met een extra veld, zonder gebruik van custom fields

  • Nico van de Kamp
  • Onderwerp Auteur
  • Gebruiker
  • Gebruiker
  • Hallo, Mijn naam is Nico van de Kamp.
Meer
09 jan 2025 14:58 - 09 jan 2025 15:01 #26292 door Nico van de Kamp
Ik wil graag voor de mailing van het contact formulier het telefoon nr. op contact formulier toevoegen en dan tussen het e-mail resp. subject veld.
Wanneer ik het volgens mij met custom fields doe heb ik volgens mij geen invloed op de volgorde en wordt deze icm. field group header na het message veld getoond.

Bovendien leek het mij releatief simpel en goeie leerschool om een component uit te breiden

Ik maak gebruik van het Cassiopeia template en nu worden enkel de velden Naam, e-mail, onderwerp en bericht getoond.
Nu heb ik een override gemaakt van com_contact en was mijn idee om het fields array uit te breiden voordat de velden gerenderd worden van het contact.xml
Code:
<?php foreach ($this->form->getFieldsets() as $fieldset) : ?>     <?php if ($fieldset->name === 'captcha' && $this->captchaEnabled) : ?>         <?php continue; ?>     <?php endif; ?>     <?php $fields = $this->form->getFieldset($fieldset->name); ?>          // Begin mijn uitbreiding om een veld toe te voegen aan contact.xml     <?php if ($fieldset->name === 'contact') {         echo 'Dit is de fieldset name: '."$fieldset->name: " . count($fields);        // $fieldset->name: = contact and number of fields is 6         $telephoneFieldXml = '             <field                 name="jform[contact_telephone]"                 type="text"                 label="Telephone"                 description="Please provide your phone number."                 required="false"                 filter="string"                 id="contact-telephone-field"             />';         $telephoneField = new SimpleXMLElement($telephoneFieldXml);         if ($telephoneField) {                                    // $telephoneField = true             echo '<pre>Telephone field created successfully.</pre>';         } else {             echo '<pre>Error: Unable to create the telephone field.</pre>';         }         $result = $this->form->setField($telephoneField, 'jform[contact_telephone]', 'contact');         echo '<pre>setField() result: ' . ($result ? 'true' : 'false') . '</pre>';    // result is true         // Refresh fields after adding         $fields = $this->form->getFieldset($fieldset->name);         echo 'Dit is de fieldset name: '."$fieldset->name: " . count($fields);    // Number of fields is still 6!!??     }     ?>          // hier is het vervolg van de oorspronkelijk code     <?php if (count($fields)) : ?>


Zowel voordat ik het veld wil toevoegen is het aantal velden 6  en nadat ik denk dat ik hem zou kunnen toevoegen of eigenlijk wil invoegen na het e-mail veld is het aantal nog steeds 6. Dus het veld is niet toegevoegd.

Heeft iemand een idee hoe je dit kunt doen om een nieuw veld kunt invoegen? En als het dan lukt, het is volgens mij een array $fields, het dan kunt invoegen misschien op basis van een index[3]
 
Laatst bewerkt 09 jan 2025 15:01 door Nico van de Kamp.

Graag Inloggen of een account aanmaken deelnemen aan het gesprek.

Gemaakt door Kunena