Проверка Zend, если представление существует - класс не работает - PullRequest
0 голосов
/ 18 ноября 2011

Я нашел этот класс:

https://github.com/lloydwatkin/Demos/blob/master/zendframework/renderifexists/RenderIfExists.php

Код выглядит следующим образом:

    <?php
/**
* View helper to render a view file if it exists
*
* @author Lloyd Watkin
* @since 12/12/2010
* @package Pro
* @subpackage View
*/

/**
* View helper to render a view file if it exists
*
* @author Lloyd Watkin
* @since 12/12/2010
* @package Pro
* @subpackage View
*/
class Pro_View_Helper_RenderIfExists
    extends Zend_View_Helper_Abstract
{
    /**
* Errors
*
* @var string
*/
    const INVALID_FILE = 'Invalid file parameter';

    /**
* Holds file name for processing
*
* @var string
*/
    protected $_file;

    /**
* Takes a products options array and converts to a formatted string
*
* @param string $file
* @return string
*/
    public function renderIfExists($file)
    {
        if (!is_string($file) || empty($file)) {
            throw new Zend_View_Exception(self::INVALID_FILE);
        }
        $this->_file = $file;
        if (false === $this->_fileExists()) {
            return '';
        }
        return $this->view->render($file);
    }

    /**
* Check to see if a view script exists
*
* @return boolean
*/
    protected function _fileExists()
    {
        $paths = $this->view->getScriptPaths();
        foreach ($paths as $path) {
            if (file_exists($path . $this->_file)) {
                return true;
            }
        }
        return false;
    }
}

Я хочу проверить, существует ли представление;Если это так: покажите.

Я поместил файл в мою / library /.Когда я вызываю $ this-> renderIfExists ('info-box.phtml');с контроллера я получаю эту ошибку:

Message: Method "renderIfExists" does not exist and was not trapped in __call() 

Как это исправить?Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 07 января 2012

для вызова помощника вида из контроллера, вы должны использовать:

$this->view->renderIfExists()

0 голосов
/ 02 июля 2012

немного поздно, но код, который вы получили выше, - это то, что я написал. Вы зарегистрировали вспомогательный путь, если бы среда знала, куда загружать файл?

...