PDA

Zobacz pełną wersję : Niestandardowe pola formularza konfiguracyjnego komponentu



lelek91
17-05-2019, 11:03
Witajcie, czy tworzył ktoś z was niestandardowe pola formularza w Joomla (Panel Administratora)? Zrobiłem sobie niestandardowe pole tak jak w dokumentacji Joomla (po prostu dla testu na razie skopiowałem to co jest w dokumentacji).
https://docs.joomla.org/Creating_a_custom_form_field_type (https://docs.joomla.org/Creating_a_custom_form_field_type?fbclid=IwAR1R3uN _KZsJR3OCiEjS0bt9RnkK-P9zEyJZHTBNwrNUz6dJIitXPFE-jeM)
W formularzach zdefiniowanych w "administrator/nazwa_komponentu/models/forms" pole które utworzyłem na podstawie dokumentacji Joomla działa, jednak ja chcę go użyć w głównym pliku config.xml komponentu. Tam jednak już nie działa, wyświetla mi się pole tekstowe. Ogólnie chcę w ustawieniach komponentu stworzyć przycisk który wykona jakąś akcję (poprzez Ajax), coś podobnego do tego przycisku który jest w głównych ustawieniach Joomla (Serwer), ten co wysyła testowy mail. Wie ktoś w jaki sposób mógłbym coś takiego utworzyć?

siristru
17-05-2019, 11:10
W takim przypadku najlepiej pomoże Ci dokumentacja tworzenia własnego komponentu: https://docs.joomla.org/J3.x:Developing_an_MVC_Component/Developing_a_Basic_Component
Przejdź do rozdziału który Cię interesuje i zobacz dokumentację. Są nawet pliki do pobrania ;)
Przeanalizuje je a dojdziesz to tego czego potrzebujesz.

lelek91
17-05-2019, 12:20
Dzięki, dużo siedziałem na tej stronie jednak jakoś nie trafiłem na tą kwestię, a teraz znalazłem. :) To czego szukałem jest pod tym linkiem

https://docs.joomla.org/J3.x:Developing_an_MVC_Component/Using_the_database#Adding_a_new_field_type
Wszystko już wyświetla się jak trzeba. Można zmieniać wartość listy, wartości się zapisują bo we froncie odczytują się inne wartości za każdym zapisem (w zależności od ustawionej w konfiguracji komponentu), jednak jest jeden mały problem. Wartość nie odświeża się na stronie konfiguracji po zapisaniu. Zawsze pokazuje pierwszy element. W tym wypadku "New York" o wartości value = 1.

Plik city.php

<?php// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');


jimport('joomla.form.formfield');


class JFormFieldCity extends JFormField {

protected $type = 'city';


// getLabel() left out


public function getInput() {
return '<select id="'.$this->id.'" name="'.$this->name.'">'.
'<option value="1" >New York</option>'.
'<option value="2" >Chicago</option>'.
'<option value="3" >San Francisco</option>'.
'</select>';
}
}

Część pliku config.xml, która wyświetla pole formularza

<fields addfieldpath="administrator/components/com_komponent/models/fields"/>

<field
name="komponent_city"
type="city"
label="JGLOBAL_TITLE"
description="JFIELD_TITLE_DESC"
required="true"
/>