View Single Post
  #1 (permalink)  
Old 05-26-2008, 09:25 AM
paragliders paragliders is offline
Junior Member
 
Join Date: May 2008
Posts: 3
Default smarty and zend form

I would like to use smarty and zend form in my application but I got this message Warning: ViewHelper decorator cannot render without a registered view object in C:\Program Files\Apache Group\Apache2\htdocs\smarty\library\Zend\Form.php on line 2167 and the form wasn't appeared. Somebody help me Please !

My directory structural is
/www
/application
controllers
models
templates
templates_c
/library
/Zend
/Smarty
.htaccess
index.php -- bootstrapper file

index.php

PHP Code:
date_default_timezone_set('Europe/Budapest');
error_reporting(E_ALL|E_STRICT);
ini_set('include_path','c:/Program Files/Apache Group/Apache2/htdocs/smarty/library;c:/Program Files/Apache Group/Apache2/htdocs/smarty');
require(
'Zend/Loader.php');


Zend_Loader::loadclass('Zend_Controller_Front');
Zend_Loader::loadclass('Zend_Config_Ini');
Zend_Loader::loadclass('Zend_Registry');
Zend_Loader::loadclass('Zend_Db');
Zend_Loader::loadclass('Zend_Form');
$front Zend_Controller_Front::getInstance();
//$front->setControllerDirectory('C:/Program Files/Apache Group/Apache2/htdocs/smarty/application/controllers');
$front->setControllerDirectory('application/controllers');
$front->setParam('noViewRenderer'true);
$front->throwExceptions(true);
$front->dispatch(); 
indexController.php

PHP Code:
class IndexController extends Zend_Controller_Action
{
    function 
indexAction()
    {
        
        require_once(
'smarty.php');
        
$view = new Zend_View_Smarty();
        
$view->setScriptPath('application');
        
$form = new Zend_Form;
        
$form->setAction('/public/form')
                  ->
setMethod('post');
         
$form->setAttrib('id''login');
         
$form->addElement('text''username');
         
//$view->form('form',$form);
         
$view->form $form;
        print 
$view->render('index.tpl');
        
    }
    

smarty.php

PHP Code:
require_once 'Zend/View/Interface.php';
require_once 
'smarty/libs/Smarty.class.php';
class 
Zend_View_Smarty implements Zend_View_Interface
{
    
/**
     * Smarty object
     * @var Smarty
     */
    
protected $_smarty;
    
//--------------------------------------------------------------------------
    /**
     * Constructor
     *
     * @param string $tmplPath
     * @param array $extraParams
     * @return void
     */
    //--------------------------------------------------------------------------
    
public function __construct($tmplPath null$extraParams = array())
    {
        
$this->_smarty = new Smarty;
        
$this->_smarty->debugging=true;
        if (
null !== $tmplPath)
        {
            
$this->setScriptPath($tmplPath);
        }
        foreach (
$extraParams as $key => $value)
        {
            
$this->_smarty->$key $value;
        }
    }
    
//--------------------------------------------------------------------------
    /**
     * Return the template engine object
     *
     * @return Smarty
     */
    //--------------------------------------------------------------------------
    
public function getEngine()
    {
        return 
$this->_smarty;
    }
    
//--------------------------------------------------------------------------
    /**
     *  Set the path to the templates
     *
     *  @param string $path The directory to set as the path.
     *  @return void
     */
    //--------------------------------------------------------------------------
    
public function setScriptPath($path)
    {
        if (
is_readable($path))
        {
            
//$this->_smarty->template_dir = $path;
            //Changed this so the path is to the directoy where the folders are
            
$this->_smarty->template_dir $path.'/templates';            
            
// Add the following so we can have all paths available to Smarty            
            
$this->_smarty->compile_dir $path.'/templates_c';
            
//$this->_smarty->cache_dir = $path.'/cache';
            //$this->_smarty->config_dir = $path.'/config';
            
return;
        }
        throw new 
Exception('Invalid path provided');
    }
    
//--------------------------------------------------------------------------
    /**
     *  Retrieve the current template directory
     *
     *  @return string
     */
    //--------------------------------------------------------------------------
    
public function getScriptPaths()
    {
        return 
$this->_smarty->template_dir;
    }
    
//--------------------------------------------------------------------------
    /**
     *  Alias for setScriptPath
     *  @param string $path
     *  @param string $prefix Unused
     *  @return void
     */
    //--------------------------------------------------------------------------
    
public function setBasePath($path$prefix 'Zend_View')
    {
        return 
$this->setScriptPath($path);
    }
    
//--------------------------------------------------------------------------
    /**
     *  Alias for setScriptPath
     *
     *  @param string $path
     *  @param string $prefix Unused
     *  @return void
     */
    //--------------------------------------------------------------------------
    
public function addBasePath($path$prefix 'Zend_View')
    {
        return 
$this->setScriptPath($path);
    }
    
//--------------------------------------------------------------------------
    /**
     *  Assign a variable to the template
     *  @param string $key The variable name.
     *  @param mixed $val The variable value.
     *  @return void
     */
    //--------------------------------------------------------------------------
    
public function __set($key$val)
    {
        
$this->_smarty->assign($key$val);
    }
    
//--------------------------------------------------------------------------
    /**
     *  Retrieve an assigned variable
     *
     *  @param string $key The variable name.
     *  @return mixed The variable value.
     */
    //--------------------------------------------------------------------------
    
public function __get($key)
    {
        return 
$this->_smarty->get_template_vars($key);
    }
    
//--------------------------------------------------------------------------
    /**
     *  Allows testing with empty() and isset() to work
     *
     *  @param string $key
     * * @return boolean
     *
     */
    //--------------------------------------------------------------------------
    
public function __isset($key)
    {
        return (
null !== $this->_smarty->get_template_vars($key));
    }
    
//--------------------------------------------------------------------------
    /**
     * Allows unset() on object properties to work
     *
     *  @param string $key
     *  @return void
     */
    //--------------------------------------------------------------------------
    
public function __unset($key)
    {
        
$this->_smarty->clear_assign($key);
    }
    
//--------------------------------------------------------------------------
    /**
     *  Assign variables to the template
     *  Allows setting a specific key to the specified value, OR passing an array
     *  of key => value pairs to set en masse.
     *
     *  @see __set()
     *  @param string|array $spec The assignment strategy to use (key or array of key
     *  => value pairs)
     *  @param mixed $value (Optional) If assigning a named variable, use this
     *  as the value.
     *  @return void
     */
    //--------------------------------------------------------------------------
    
public function assign($spec$value null)
    {
        if (
is_array($spec))
        {
            
$this->_smarty->assign($spec);
            return;
        }
        
$this->_smarty->assign($spec$value);
    }
    
//--------------------------------------------------------------------------
    /**
     *  Clear all assigned variables
     *  Clears all variables assigned to Zend_View either via {@link assign()} or
     *  property overloading ({@link __get()}/{@link __set()}).
     *
     *  @return void
     */
    //--------------------------------------------------------------------------
    
public function clearVars()
    {
        
$this->_smarty->clear_all_assign();
    }
    
//--------------------------------------------------------------------------
    /**
     *  Processes a template and returns the output.
     *  @param string $name The template to process.
     *  @return string The output.
     */
    //--------------------------------------------------------------------------
    
public function render($name)
    {
        return 
$this->_smarty->fetch($name);
    }
    
//--------------------------------------------------------------------------

Reply With Quote