2012-11-28 16 views
6

Ho lavorato con PHP per un po ', ma abbastanza nuovo per Smarty.Forza Smarty per mostrare errori PHP

Sto lavorando con Prestashop e ho notato che Smarty sembra divorare tutti gli errori di PHP - quando c'è un errore nel codice PHP, il file .tpl emette solo una pagina vuota. Ho provato ma non riesco a far visualizzare a Smarty qualunque sia il codice PHP in uscita, anche se c'è un errore.

La segnalazione degli errori PHP è impostata per mostrare gli errori.

Così, per esempio, diciamo che questo è il file example.php:

<?php 
//included classes etc go here, irrelevant for this issue 

error_reporting(E_ALL^E_NOTICE); 

echo obvious wrong syntax" 
?> 

Questo file è collegato a example.tpl che si inserisce l'uscita in un blocco modello.

Ovviamente, dovrebbe generare un errore. Come faccio a rendere Smarty in realtà tale errore?

risposta

12

Per attivare la modalità di debug, andare a config/config.inc.php

Trova le seguenti righe e chage off per on per il primo e impostato a true il secondo

/* Debug only */ 
@ini_set('display_errors', 'on'); 
define('_PS_DEBUG_SQL_', true); 

Questa volontà visualizzare gli errori PHP e SQL (questo probabilmente sarà sufficiente per risolvere "pagina vuota").

C'è anche un blog post on prestashop site about p() and d() methods and how to track exceptions

Per attivare modelli di debug nella versione Prestashop di età superiore a 1.5, andare a config/smarty.config.inc.php

Trova la seguente riga e impostarlo su true

$smarty->debugging = true; 

Quando si aggiorna la pagina, è necessario eseguire il rendering themes/debug.tpl.

Per attivare modelli di debug in Prestashop 1.5 + è possibile attivare il debug Smarty tramite pannello di amministrazione

Preferenze> Prestazioni> Smarty

e impostare Always open console ma console sarà aperto a tutti (non buona per il sito dal vivo :))

o impostare Open console with URL parameter (SMARTY_DEBUG) e aggiungere ?SMARTY_DEBUG alla fine dell'URL per vedere la console

Spero che questo aiuti.

+0

Eccellente, grazie! – jovan

+0

Dove si trova questo file cofing/config.inc.php. Sto usando XAMPP. e in XAMPP c'è solo un file di cofing.inc.php situato all'interno della cartella phpmyadmin e non c'è nulla di relativo a questo ??? –

+0

La mia risposta riguardava Prestashop 1.5, basta controllare la risposta di @Rocker Maruf sotto per Prestashop 1.6+ –

0

Impostare la variabile $error_reporting.

Vedi http://www.smarty.net/docsv2/en/variable.error.reporting.tpl

+0

Scusate ma dove esattamente dovrei impostare questo? Facendo '$ error_reporting = 1;' nel file stesso non sembra fare nulla. L'aggiunta di '$ smarty-> error_reporting = E_ALL & ~ E_NOTICE;' inoltre non fa nulla. – jovan

1

Ho visto la risposta di @Sergei Guk e fuori rotta, è una buona risposta. Tuttavia, prestashop ha rilasciato la versione 1.6.

Quindi se si desidera mostrare tutti gli errori in prestashop v 1.6.0.6, basta andare config/defines.inc.php

Sostituire define('_PS_MODE_DEV_', false); con define('_PS_MODE_DEV_', true);

Quello che in realtà non è impostata una costante e nella riga successiva controlla se "_PS_MODE_DEV_" è vero allora lo farà mostrare tutti i tipi di errori in prestaShop

if (_PS_MODE_DEV_) 
{ 
    @ini_set('display_errors', 'on'); 
    @error_reporting(E_ALL | E_STRICT); 
    define('_PS_DEBUG_SQL_', true); 
} 
else 
{ 
    @ini_set('display_errors', 'off'); 
    define('_PS_DEBUG_SQL_', false); 
} 

ho testato e funziona benissimo.