Back to top

Autore Topic: [joomla 2.5 - MVC]Problema con una view  (Letto 1263 volte)

Offline raoul_benneth

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
[joomla 2.5 - MVC]Problema con una view
« il: 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:

Codice: [Seleziona]

<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!!



mau_develop

  • Visitatore
Re:[joomla 2.5 - MVC]Problema con una view
« Risposta #1 il: 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
Codice: [Seleziona]
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
Codice: [Seleziona]
            // 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:
Codice: [Seleziona]
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

Offline raoul_benneth

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[joomla 2.5 - MVC]Problema con una view
« Risposta #2 il: 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.

 



Web Design Bolzano Kreatif