Joomla.it Forum

Non solo Joomla... => Sviluppo => : devillino 22 Oct 2013, 20:31:16

: utilizzo json [RISOLTO]
: devillino 22 Oct 2013, 20:31:16
salva a tutti,
sto sviluppando il mio primo componente che fa uso intensivo di chiamate ajax. questa applicazione è un chat di gruppo costituita da una view che richiama automaticamente altre view per le varie operazioni.
il problema nel quale mi sono incartato è il seguente


quando richiamo il controller per eseguire una funzione se specifico il formato mi da errore 500 la richiesta HTTP, mentre se non specifico il formato mi restituisce la pagina web e non l'oggetto json. :(


posto la prima richiesta funzionante e poi la seconda:
:


   $.ajax({
       type: 'GET',
       url: "http://localhost/nightlife/index.php/component/jchatta?view=msgIn&format=json",
       data: "gruppo="+idgruppo+"&lastmsg="+lastmsg,
       cache: false,
       dataType: "json",
       success: function(data) {
richiama correttamente la msgIn/view.json.php (restituendomi l'oggetto json)


:
   $.ajax({

          type: 'GET',
          url: "http://localhost/nightlife/index.php/component/jchatta?task=msgOut.send",
          data: "msg="+$("#input").val()+"&gruppo="+idgruppo+"&lastmsg="+lastmsg,
          cache: false,
          dataType: "json",
          success: function(data) {
richiama correttamente la msgOut/view.json.php (restituendomi la pagina html con all'interno scritto quello che dovrebbe essere l'oggetto json)

entrambe le view iniziano e terminano così(metto come esempio JchattaViewMsgIn

:
class JchattaViewMsgIn extends JView

{
   function display( $tpl = null )
   {
      $document = JFactory::getDocument();     
      $document->setMimeEncoding('application/json');


......


/*stampa dell'oggetto json*/
   echo $this->chat;

sbaglio qualcosa di concettuale ...debugando dal controller noto che mi istanzia il model lo modifica lo lega alla view correttamente che errore commetto?? sapreste aiutarmi a capire se sbaglio a richiamare i task ecc ...la versione di joomla è la 2.5
grazie mille :)
: Re:utilizzo json
: devillino 22 Oct 2013, 22:19:18
provando a debuggare ho visto che aggiungendo il formato nella link (format=json) mi da errore in questa function
:

protected static function executeComponent($path) {
 ob_start();
 require_once $path;
 $contents = ob_get_contents();
 ob_end_clean();
 return $contents;
 }
ho scoperto che il il require_once richiama il master controller che richiama a sua volta il sub controller però il nome era sbagliato non più msgOut.php ...bensì msgOut.json.php ...quindi i sub controller devono essere differenziati a secondo dal formato della view a cui fanno riferimento??? (dando per default il formato html)


: Re:utilizzo json [RISOLTO??]
: mmleoni 30 Oct 2013, 12:24:42
mi sono perso un attimo tra controller e sub controller :(

spero comunque di aver capito la domanda  ;D

quando specifichi un formato per l'output della pagina deve esserci la rispettiva view per quel formato.
parlando a SEF disattivato, per la lista dei feed del sito

/index.php?option=com_content&view=category&id=7&format=feed&type=rss&lang=it

se guardi in /components/com_content/views/category/ troverai il il file view.feed.php

pertanto se per un componente ti serve il formato pippo dovrai avere la view view.pippo.php!

provare per credere ;)


ps: ricordati che joomla lavora come convenctions over configuration, quindi occhio a tutte le inclusioni implicite


ciao,
marco



: Re:utilizzo json [RISOLTO??]
: devillino 30 Oct 2013, 20:54:32
ciao grazie per la risposta e l'interessamento :)
mi sono perso un attimo tra controller e sub controller :(
si non ho seguito la nomenclatura standard, ho letto queto nome in qualche post e pensavo fosse così :P cmq master controller intendo il controller che sta nella cartella principale del componente mentre il sub controller quello che sta nella cartella controller e con il nome lo stesso della view.

la cosa che non sapevo che ho scoperto debuggando ed effettivamente provando a creare il nome ha funzionato è la seguente ....avendo la msgOut/view.json.php ho dovuto chiamare il controller controller/msgOut.json.php e non semplicemente controller/msgOut.php.
non so se mi sono spiegato però non sapevo di questa cosa!
: Re:utilizzo json [RISOLTO??]
: mau_develop 30 Oct 2013, 21:24:24
http://forum.joomla.it/index.php/topic,158454.msg708888.html#msg708888
: Re:utilizzo json [RISOLTO??]
: devillino 30 Oct 2013, 22:04:16
esatto quel post è stato l'inizio di tutto per me!!!
grazie alla tua spiegazione sono riuscito a fare molto :P :) sia in questo componente che in altri (sono ancora all'inizio sto imparando).
Per il formato della pagina non ho trovato molte info, così ho dovuto leggere e poi provando e debuggando mi sono date delle risposte ...volevo chiedere ora se il tutto sta funzionando solo per caso oppure torna ciò che ho scritto sopra :)