Joomla.it Forum

Non solo Joomla... => Sviluppo => : raoul_benneth 03 Feb 2013, 00:11:06

: [joomla 2.5 - MVC]Problema con una view
: raoul_benneth 03 Feb 2013, 00:11:06
Salve a tutti e complimenti per questo magnifico forum.


Da qualche giorno mi sto cimentando nella scrittura di un componente per joomla 2.5 che attualmente
è solo a scopo didattico per il sottoscritto.


Si tratta semplicemente di una semplicissima agenda.


Passando al mio problema specifico:


ho una tabella composta da:
id (pk)
personaID (fk su tabella persone)
giorno (varchar)
dalle (time)
alle (time)


mi funziona tutto egregiamente, riesco ad inserire un record, modificarlo o eliminarlo etc...


Ho pensato quindi di complicarmi un pò la vita pensando di voler gestire degli eventi 'fissi'
durante la settimana.


Vorrei capire come fare per:


anzichè far uscire sul form "giorno -> valore"
vorrei una serie di checkbox : lun, mar, mer, gio, ven, sab, dom


sul mio "edit.php" il codice che sto provando è il seguente:

:

<td><a href="#" onclick="select('giorno[]',1);"><?php echo JText::_'SELEZIONA TUTTI' );?>[/url] | <a href="#" onclick="select('giorno[]',0);"><?php echo JText::_'DESELEZIONA' );?>[/url]
               <div class="btns"><?php echo $this->form->lists['giorno'];?><>
         </td>   

l'errore che ottengo è:
Notice: Undefined property: JForm::$lists in C:\wamp\www\joomla\administrator\components\com_test\views\agenda\tmpl\edit.php on line 61

Grazie in anticipo a tutti!!


: Re:[joomla 2.5 - MVC]Problema con una view
: mau_develop 03 Feb 2013, 15:05:23
sull'edit non devi fare nulla poichè è una vista, al max modifichi l'html.
Il form in joomla è governato da jform che nel model si occupa di caricare le definizioni xml, caricare i dati del post o recuperati dalla sessione ( se sei di ritorno sul form) e nella table fare un bel bind dove li unisce e li salva

Se devi cambiare qualcosa lo dovrai fare nel xml dove definisci il form.

avrai un field "giorno" di tipo text (credo) deve diventare un campo checkbox o radio se ne vuoi uno solo.
Nel primo caso trovi quì come si definisce:
http://docs.joomla.org/Standard_form_field_and_parameter_types
e per il tuo caso specifico quì:
http://docs.joomla.org/Checkboxes_form_field_type

..però succede qualcosa.... il tuo valore sarà un array che dovrai gestire in alcuni punti del tuo componente e precisamente nel bind e nel caso ritorni al form per errori o altro:
nel caso di ritorno al form, loadformdata contiene un condizionale
:
if (empty($data)) {
            $data = $this->getItem();
 
           
se non ci sono dati nel post li recupera dalla sessione nello spazio identificato da quell'item... in quello spazio i tuoi dati saranno serializzati(*) per cui devi riportarli ad array
:
            // Convert field ( to an array.
            $registry = new JRegistry;
            $registry->loadString($data->Tuo_field_name);
            $data->set('Tuo_field_name',$registry->toArray());
Quando i dati vengono spediti dal form per essere salvati sono un array, un array non può essere savato in un db ha bisogno di diventare una stringa serializzata (*) ; nella Table troverai il metodo Bind:
:
public function bind($array, $ignore = ''){
       
        if (isset($array['params']) && is_array($array['params'])) {
            $registry = new JRegistry;
            $registry->loadArray($array['params']);
            $array['params'] = (string) $registry;
        }
       
        return parent::bind($array, $ignore);
       
    }
Quello che vedi è quello che solitamente fa con i parametri che sono un array, devi fare la stessa cosa col tuo fieldname
: Re:[joomla 2.5 - MVC]Problema con una view
: raoul_benneth 03 Feb 2013, 18:52:59
Perfetto !! Funziona tutto a dovere adesso sia lato admin che lato sito !


Grazie.


Avrei un'altra domanda.


Per creare una vista personalizzata (select bla from a left join x on blabla etc...)
soltanto lato sito, devo comunque creare un form nuovo o posso passare tranquillamente
alla vista già esistente una query qualsiasi ?


Scusate per le domande magari banali ma vengo da tutt'altra formazione ed è solo da qualche
giorno che mi sono innamorato di joomla.