Back to top

Autore Topic: Funzione publish in nuovo componente  (Letto 3833 volte)

Offline urbanspaceman

  • Nuovo arrivato
  • *
  • Post: 48
  • Sesso: Maschio
    • Mostra profilo
Funzione publish in nuovo componente
« il: 18 Dic 2009, 02:12:35 »
Ciao a tutti, sto cercando modificare un componente per renderlo aderente alle specifiche che servono per il mio sito.

Devo aggiungere l'icona publish nel backend, quando visualizzo la lista degli eventi.

fin qui tutto bene, seguendo una guida in internet sono riuscito a creare l'icona (verde se il campo published della mia tabella è a 1 e rossa se è a 0), c'è anche il link ma una volta cliccato non mi porta a nulla.

il codice per generare i link è questo
$published    = JHTML::_('grid.published', $row, $i);
echo "$published";

poi sempre seguendo la guida ho aggiunto questa funzione nel mio controller

Codice: [Seleziona]
function publish() {
global $option;

$cid = JRequest::getVar ('cid', array(), '', 'array');
if($this->_task == 'publish')
{
$publish = 1;
}
else
{
$publish = 0;
}

$helloTable =& JTable::getInstance('pdevents', 'Table');
$helloTable->publish($cid, $publish);
$this->setRedirect( 'index.php?option=' .$option );

}

non so come modificarlo in realtà...
la mia tabella si chiama jos_pastdays e il campo che ci interessa si chiama published.

cid non so esattamente a cosa fa riferimento. ( i miei eventi hanno un campo id)

potreste darmi una dritta in merito?
Grazie a tutti per la disponibilità.

Urban

mau_develop

  • Visitatore
Re:Funzione publish in nuovo componente
« Risposta #1 il: 18 Dic 2009, 09:39:20 »
hai aggiunto il campo alla tabella jos_pastdays? ... immagino di si..

   $helloTable =& JTable::getInstance('pdevents', 'Table');

Questo vuol dire che avrai un file table che si occupa della tabella del db, hai aggiunto quel campo anche li?

nel model o nella view ci sarà anche lo script che ti fa vedere verde se publish e rosso se unpublish ..

maurizio

Offline urbanspaceman

  • Nuovo arrivato
  • *
  • Post: 48
  • Sesso: Maschio
    • Mostra profilo
Re:Funzione publish in nuovo componente
« Risposta #2 il: 18 Dic 2009, 17:48:02 »
Ciao Maurizio e grazie per la risposta, dunque vediamo un pò:

nella tabella jos_pastdays ho messo il campo published e il componente sembra utilizzare quel campo correttamente infatti mi visualizza l'icona verde se il valore è 1 e rossa se è 0.

ora non so bene come procedere. immagino che cliccando sull'icona rossa o verde, venga richiamata la funzione che ho incollato nel primo post. Questa funzione al momento si trova nel file pdevent.php nella cartella controllers dove già ci sono le funzioni Save, Remove, Cancel, Edit.

quando clicco sull'iconcina per pubblicare, non succede nulla, si ricarica semplicemente la pagina.

Ora, io ho brutalmente copiato una funzione publish da un tutorial, non sono ferratissimo di joomla ed ho un'infarinatura di php quindi sicuramente sbaglio qualcosa nel richiamare questa funzione (che immagino comunque sia sbagliata)

Nel file pdevents.php nella cartella models c'è una classe che estende JModels e che dentro ospita le funzioni setid, getdata, store e delete.

mau_develop

  • Visitatore
Re:Funzione publish in nuovo componente
« Risposta #3 il: 19 Dic 2009, 09:26:02 »

quando clicco sull'iconcina per pubblicare, non succede nulla, si ricarica semplicemente la pagina.

è questo il tuo problema, ogni bottone dell'admin esegue come dici una funzione.
Dovrebbero essere nel controller, ma non è detto.
Se vuoi prendere un'esempio, guarda come funzionano i pulsanti edit cancel etc.

function add() {
      $model = $this->getModel('nome del model');
      $view =& $this->getView('nome della cartella che contiene la view', 'html');
      $view->setModel($model);
      $view->display();
   }

questo esempio di un pulsante add ti manda ad un form per inserire qualcosa. Alla fine avrai allo stesso modo un pulsante submit che chiamerà una funzione presente nel controller che si occuperà di chiamare i metodi contenuti negli altri files del pacchetto che svolgeranno quanto richiesto dal submit.

Questo è il "giro" dell'mvc di Joomla.
-----------------------------------------
Nel file pdevents.php nella cartella models c'è una classe che estende JModels e che dentro ospita le funzioni setid, getdata, store e delete.
---------------------------------------
... appunto, segui ciò che fa "delete" ...

Maurizio

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Funzione publish in nuovo componente
« Risposta #4 il: 26 Dic 2009, 22:32:17 »
ovviamente senza vedere il codice è difficile poter intuire ove stia il problema, ma attenzione che
Codice: [Seleziona]
JHTML::_('grid.published', $row, $i)
è solo metà del codice che deve essere inserito, infatti questo metodo genera un javascript che 'flagga' la checkbox della lista e poi effettua il submit della form con il task opportuno (publish o unpublish a seconda dei casi); per creare la checkbox con il corretto attributo id devi usare il seguente codice
Codice: [Seleziona]
JHTML::_('grid.id',   $i, $row->id );

a questo punto inserisci un print_r($cid) ed un die() nel metodo publish() per verificare che il routing sia corretto ed i dati arrivino.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline robinhoood

  • Esploratore
  • **
  • Post: 77
  • http://www.webdreaming.it
    • Mostra profilo
Re:Funzione publish in nuovo componente
« Risposta #5 il: 22 Set 2011, 16:57:05 »
Ciao, sto tentando di aggiungere l'iconcina per la pubblicazione/sospensione nella vista dell'elenco degli elementi nel backend di un componenete helloworld.

il codice è : 

Codice: [Seleziona]
<?php foreach($this->items as $i => $item): ?>
    <tr class="row<?php echo $i 2?>">
        <td>
            <?php echo $item->id?>
        </td>
        <td>
            <?php echo JHtml::_('grid.id'$i$item->id); ?>
        </td>
        <td align="center">
            <?php echo $item->title?>
        </td>
        <td align="center">
            <?php echo $item->text?>
        </td>
        <td align="center">
            <?php echo $item->time?>
        </td>
        <td align="center">
            <?php echo JHtml::_('grid.published',$item->published $i); ?>
           
        </td>
    </tr>
<?php endforeach; ?>


l'icona compare ma se la clicco mi torna alla pagina principale del componente.
Ho cercato in giro per il web altri esempi e documentazione, tentando anche di prendere ispirazione da altri componenti nativi in joomla 1.7....purtroppo non sono riuscito a combinare nulla di buono....

Vi ringrazio per l'aiuto che mi darete!
 :)
Webdreaming.it - Realizzazioni siti web

Offline lucaguida

  • Nuovo arrivato
  • *
  • Post: 30
  • Sesso: Maschio
    • Mostra profilo
Re:Funzione publish in nuovo componente
« Risposta #6 il: 10 Feb 2012, 12:22:50 »
non so se può ancora servirti, visto che è passato parecchio tempo, ma avevo lo stesso tuo problema ed ho risolto aggiungendo al fondo del form della pagina con la lista un input hidden che valorizza il controller

<input type="hidden" name="controller" value="controller che vuoi chiamare" />

e ora funziona
ciao

 



Web Design Bolzano Kreatif