Php/docs/yaf-dispatcher.setview

提供:Dev Guides
< Php
移動先:案内検索

Yaf_Dispatcher::setView

(Yaf >=1.0.0)

Yaf_Dispatcher::setViewカスタムビューエンジンを設定する


説明

public Yaf_Dispatcher::setView ( Yaf_View_Interface $view ) : Yaf_Dispatcher

このメソッドは、Yaf_View_Simple ではなくカスタムビューエンジンを使いたいときに利用します。


パラメータ

view
Yaf_View_Interface のインスタンス。


返り値

例1 カスタムビューエンジンの例

<?phprequire "/path/to/smarty/Smarty.class.php";class Smarty_Adapter implements Yaf_View_Interface{    /**     * Smarty オブジェクト     * @var Smarty     */    public $_smarty;     /**     * コンストラクタ     *     * @param string $tmplPath     * @param array $extraParams     * @return void     */    public function __construct($tmplPath = null, $extraParams = array()) {        $this->_smarty = new Smarty;         if (null !== $tmplPath) {            $this->setScriptPath($tmplPath);        }         foreach ($extraParams as $key => $value) {            $this->_smarty->$key = $value;        }    }     /**     * テンプレートへのパスを設定する     *     * @param string $path パスに設定するディレクトリ     * @return void     */    public function setScriptPath($path)    {        if (is_readable($path)) {            $this->_smarty->template_dir = $path;            return;        }         throw new Exception('Invalid path provided');    }     /**     * 変数をテンプレートに代入する     *     * @param string $key 変数名     * @param mixed $val 変数の値     * @return void     */    public function __set($key, $val)    {        $this->_smarty->assign($key, $val);    }     /**     * empty() と isset() による確認をできるようにする     *     * @param string $key     * @return boolean     */    public function __isset($key)    {        return (null !== $this->_smarty->get_template_vars($key));    }     /**     * オブジェクトのプロパティを unset() できるようにする     *     * @param string $key     * @return void     */    public function __unset($key)    {        $this->_smarty->clear_assign($key);    }     /**     * 変数をテンプレートに代入する     *     * 指定したキーに値を代入したり、     * key => value ペアの配列で一括代入したりできるようにします。     *     * @see __set()     * @param string|array $spec 代入方法に合わせて、キー あるいは key => value ペアの配列)     * @param mixed $value (オプション) 変数名を指定した場合に、ここで値を指定する     * @return void     */    public function assign($spec, $value = null) {        if (is_array($spec)) {            $this->_smarty->assign($spec);            return;        }         $this->_smarty->assign($spec, $value);    }     /**     * 代入済みのすべての変数をクリアする     *     * {@link assign()} あるいはプロパティのオーバーロード     * ({@link __get()}/{@link __set()}) で Yaf_View に代入したすべての変数をクリアします     *     * @return void     */    public function clearVars() {        $this->_smarty->clear_all_assign();    }     /**     * テンプレートを処理して出力を返す     *     * @param string $name 処理するテンプレート     * @return string 出力     */    public function render($name, $value = NULL) {        return $this->_smarty->fetch($name);    }    public function display($name, $value = NULL) {        echo $this->_smarty->fetch($name);    }}?>

例2 Yaf_Dispatcher::setView() の例

<?phpclass Bootstrap extends Yaf_Bootstrap_Abstract {    /**     * smarty 用の設定をしておきます     *     * smarty.left_delimiter   = "テンプレート:" * smarty.right delimiter = ""     * smarty.template_dir     = APPLICATION_PATH "/views/scripts/"     * smarty.compile_dir      = APPLICATION_PATH "/views/templates_c/"     * smarty.cache_dir        = APPLICATION_PATH "/views/templates_d/"     *     */    public function _initConfig() {        $config = Yaf_Application::app()->getConfig();        Yaf_Registry::set("config", $config);    }    public function _initLocalName() {        /** Smarty_Adapter クラスをローカルライブラリディレクトリに配置します */        Yaf_Loader::getInstance()->registerLocalNamespace('Smarty');    }    public function _initSmarty(Yaf_Dispatcher $dispatcher) {        $smarty = new Smarty_Adapter(null, Yaf_Registry::get("config")->get("smarty"));        $dispatcher->setView($smarty);        /* これで、Smarty ビューエンジンが Yaf のデフォルトビューエンジンになりました */    }}?>