Smarty come motore di template, aiuto non parte!!!

Salve a tutti vorrei integrare smarty come motore di template in Zend Framework ma non riesco a configurare l'ambiente.

Sto seguendo una guida ed ho fatto i seguenti cambiamenti :

- Nel file di bootstrap (index.php)

// Sostituisce view renderer con Smarty
$vr = new Zend_Controller_Action_Helper_ViewRenderer();
$vr->setView(new Templater());
$vr->setViewSuffix('tpl');
Zend_Controller_Action_HelperBroker::addHelper($vr);

che dovrebbe sostituire Smarty al pugin ViewRenderer

- Mi sono creato una classe Templater che contiene il seguente codice :

require_once 'Zend/View/Abstract.php';

    class Templater extends Zend_View_Abstract
    {
        protected $_path;
        protected $_engine;

        // Viene chiamato dal file index.php e istanzia Smarty
        public function __construct()
        {
            $config = Zend_Registry::get('config');

            require_once('Smarty/Smarty.class.php');

            $this->_engine = new Smarty();
            $this->_engine->template_dir = $config->paths->templates;
            $this->_engine->compile_dir = $config->paths->templates_c;
            $this->_engine->plugins_dir = $config->plugin->dir;
        }

        public function getEngine()
        {
            return $this->_engine;
        }

        public function __set($key, $val)
        {
            $this->_engine->assign($key, $val);
        }

        public function __get($key)
        {
            return $this->_engine->get_template_vars($key);
        }

        public function __isset($key)
        {
            return $this->_engine->get_template_vars($key) !== null;
        }

        public function __unset($key)
        {
            $this->_engine->clear_assign($key);
        }

        public function assign($spec, $value = null)
        {
            if (is_array($spec)) {
                $this->_engine->assign($spec);
                return;
            }

            $this->_engine->assign($spec, $value);
        }

        public function clearVars()
        {
            $this->_engine->clear_all_assign();
        }

        public function render($name)
        {
            return $this->_engine->fetch(strtolower($name));
        }

        public function _run()
        { }
    }

e costruttore se vedete bene si occupa di istanziare Smarty.

- Ho creato una classe genitore per tutti i controller chiamata CustomControllerAction

class CustomControllerAction extends Zend_Controller_Action {

    public $db;

    public function init(){
        $this->db = Zend_Registry::get('db');
        echo "Stampa del costruttore CustomController";
    }
}

- I miei controller ereditano da quest'ultima classe ed estendono mediante i soliti metodi publici.

Ad esempio il controller di default è così scritto :

require_once 'CustomControllerAction.php';

class IndexController extends CustomControllerAction
{
    public function indexAction(){
        echo "Prova";        
    }

    public function displayAction(){
        echo 'Stampa della funzione displayAction()';
    }

    public function noRouteAction(){
        echo "Attenzione !!!";
    }

}

il problema è che la guida dice che non ho bisogno di chiamare il metodo display della classe Smarty per poter renderizzare il template, però a me non funziona.

Qualcuno di voi potrebbe darmi una mano????

inviato 6 anni fa
wino_7
X 0 X

Non puoi fornire il link alla guida?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Purtroppo è no, perchè è un libro che ho comprato, cmq è della apogeo e si chiama sviluppare applicazioni web 2.0 con php.

risposto 6 anni fa
wino_7
X 0 X

Ok, non ho mai provato a fare una cosa del genere e ho delle difficoltà al momento a fare le prove.

Ho trovato questi due articoli che credo siano interessanti e possano chiarirti un po' di cose:

http://devzone.zend.com/article/120

http://kpumuk.info/php/zend-framework-using-smarty-as-template-engine/

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda