RISOLTO sito in php che usa smarty template

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

roccochiolo

Nuovo Utente
Messaggi
9
Reazioni
1
Punteggio
3
buonasera a tutti apro questa discussione perche ho un problema e non riesco a saltarci fuori, ho un sito a 3 colonne per l inserimento di vari blocchi tipo login cerca ecc. ecc. adesso nella tabella setting ho messo due campi
1 colonna sinistra che puo avere il valore 1 se si 0 se no e colonna 2 identichi parametri della precedente.

questo e il files index.tpl formato da 3 colonne sinistra centro e destra che a sua volta caricano un files modulesright.tpl
HTML:
      <{if $right_column == 1}>
       <div class="right" >
        <h3>Destra</h3>
         <{include file="modulesright.tpl"}>
        </div>
      
<{/if}>
questo e il files che carico e con php invio a smarty
Codice:
 <{if $contentsiteleft.blocksleft}>
<{$contentsiteleft.blocksleft}>
<{/if}>
PHP:
 if($sittings['enablecolright'])
 {
          if(modulColumsRight()){
            $rightcol = modulLoadRight($level);
             ob_start();
             foreach($rightcol as $key => $right){            
                $contentsiteright =[];
                include "./modules/".$right['name']."/index.php"; 
                 $contentsiteright["blocksright"]  = ob_get_contents();        
                $smarty->assign( 'contentsiteright' , $contentsiteright);
                  }ob_end_clean();
                   
      }

     $smarty->assign( 'right_column' , 1);
     }else{
          $smarty->assign( 'right_column' , 0);
          }
e mi genera errori :
Codice:
Warning: Undefined array key "contentsiteleft" in
grazie a tutti
 
contentsiteleft non è stata dichiarata dal tuo codice..
Domanda: ti stai facendo fare il codice da qualche ia?
 
ma smarty è un semplice template engine per php ( tra l'altro scritto in php ) come può essere un blade o un latte..
L'errore te lo da perchè non hai dichiarato niente per la parte "left".. Se vedi è tutta roba per il "right"
 
Si scusa e right comunque c e la condizione if che se ci sta qualcosa la invia altrimenti no è così ho risolto
 
Certo, c'è l'if, ma se non lo dichiari e cerca di leggerlo ti darà sempre quel warning.
PHP è molto permissivo, un altro linguaggio di programmazione avrebbe dato un bell'errore ( e non un warning ) bloccando tutto.
Le variabili van comunque inizializzate...
 
No ti dico 17 anni fa avevo iniziato a studiare php ancora c era il php 5 e in quel periodo stavo iniziando a fare un sito e chiedevo aiuto nei vari forum ! Adesso dopo 17 anni ho ripreso a studiare nel tempo libero e se devo farlo lo riesco a fare da solo per favore fammi vedere come si deve dichiarare qualcosa che ha ob_get_contents
 
Chiedevo per capire se dovevo andare contro un mulino a vento xD
Bene bene. Allora, qui vedo un po' di problemi, il primo è la variabile $sittings che immagino fosse $settings.
Poi, il ciclo foreach ha un piccolo problema:
PHP:
foreach($rightcol as $key => $right){           
    $contentsiteright =[];
    include "./modules/".$right['name']."/index.php";
    $contentsiteright["blocksright"]  = ob_get_contents();       
    $smarty->assign( 'contentsiteright' , $contentsiteright);
}
Ad ogni ciclo, riscrive la variabile e quindi restituisce a"smarty" solo l'ultimo modulo..
Una possibile correzione è questa:
PHP:
foreach($rightcol as $key => $right) {
    ob_start();
    include "./modules/" . $right['name'] . "/index.php";
    $contentsiteright[] = [ "blocksright" => ob_get_clean() ];
}
$smarty->assign('contentsiteright', $contentsiteright);
ob_get_clean è la combinazione tra il get_contents ed end_clean, infatti acquisisce e pulisce subito
 
Grazie mille gentilissimo stasera davanti al PC cercherò di capirlo per impararlo Grazie tantissimo

Ciao mi devi scusare ti devo fare un altra domanda io con smarty creo un if chiamato errore e quando faccio il login ed il capo imput e vuoto dico a smarty $smarty->assign("errore" ,true) ;
A quel punto c è una parte di codice html che fa vederevl errore, però mi genera errore warning undefined key errore , e non trovo nessuna guida su come definire l array per favore riesci a spiegarmi con un esempio grazie mille
 
Prova a farmi vedere il codice.
Perchè per inizializzare un array vuoto basta $mioArray = [];
 
Ciao ho risolto guardando su una guida di smarty template smarty riconosce la funzione isset quindi quando ci sta un errore richiamo dal templare un pezzo di codice con il messaggio altrimenti sta buono li e funziona tutto
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top