symfony 結合 smarty 及相關的問題
來源:程序員人生 發布時間:2014-10-18 08:00:00 閱讀次數:6256次
url:
http://trac.symfony-project.com/wiki/sfSmartyViewPlugin
http://www.symfony-project.org/forum/index.php/mv/msg/122/22565/
url:
讓你的symfony 支持smarty
在你的symfony 項目 askeet目錄下面(d:/apps/www/symfony/askeet)
執行
記得要在./symfony文件中加入:
set_include_path(dirname(__FILE__).PATH_SEPARATOR.get_include_path());

cmd>php symfony plugin-install http://plugins.symfony-project.com/sfSmartyViewPlugin

安裝完后sfSmartyViewPlugin在 d:/apps/www/symfony/askeet/plugins/sfSmartyViewPlugin目錄中
在d:/apps/www/symfony/askeet/plugins/sfSmartyViewPlugin/doc中有一個PDF是專門介紹該插件的安裝
經試用總結如下:
1.在d:/apps/www/symfony/askeet/frontend/config中創建 module.yml文件
內容如下
all:
view_class: sfSmarty
2.拷貝d:/apps/www/symfony/askeet/plugins/sfSmartyViewPlugin/templates/layout.tpl
至 d:/apps/www/symfony/askeet/frontend/templates 中
拷貝d:/apps/www/symfony/askeet/plugins/sfSmartyViewPlugin/templates/indexSuccess.tpl
至 d:/apps/www/symfony/askeet/frontend/module/default/templates 中
3.將下面的內容添加到d:/apps/www/symfony/askeet/frontend/config/app.yml中
# default values
all:
sfSmartyView:
class_path: d:/apps/www/symfony/askeet/lib/Smarty/libs
cache_dir: d:/apps/www/symfony/askeet/web/tmp
template_extension: .tpl
template_security: false
按上面的三步即可完成一個簡單版本的symfony+smarty 的演示
中間可能會出現一些錯誤,請參考doc目錄下面的pdf文檔
下面是出現的部分錯誤:在調試狀態下會出現
”Unable to load "SmartyUrlHelper.php" helper “
相關的提示
針對此問題我們可以對d:/apps/www/symfony/askeet/plugins/sfSmartyViewPlugin/lib/sfSmartyView.class.php
做如下的修改
--- sfSmartyViewPlugin-0.1.2libsfSmartyView.class.php.orig Thu Jan 25 11:31:27 2007
+++ sfSmartyViewPlugin-0.1.2libsfSmartyView.class.php Thu Jan 25 12:09:51 2007
@@ -172,7 +172,12 @@
}
include (self::$cache->getFile($helperName, self::CACHENAMESPACE));

try ...{
- sfLoader::loadHelpers(array($helperName, 'Smarty' . $helperName));

+ if (self::isExistSmartyHelper($helperName)) ...{
+ sfLoader::loadHelpers(array($helperName, 'Smarty' . $helperName));
+ }

+ else ...{
+ sfLoader::loadHelpers(array($helperName));
+ }
}

catch (sfViewException $e) ...{

if (!strpos($e->getMessage(), 'Smarty' . $helperName)) ...{
@@ -182,6 +187,21 @@
self::$loadedHelpers[$helperName] = true;
}

+ /**//*
+ * @param string $helperName
+ * @return boolean
+ */

+ private function isExistSmartyHelper($helperName) ...{

+ if ($pluginHelperDirs = glob(sfConfig::get('sf_plugins_dir').'/*/lib/helper') ) ...{

+ foreach ($pluginHelperDirs as $pluginHelperDir) ...{

+ if (is_readable($pluginHelperDir . '/Smarty' . $helperName . 'Helper.php')) ...{
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+

/**//**
* sfSmartyView::parseFile()
*
即d:/apps/www/symfony/askeet/plugins/sfSmartyViewPlugin/lib/sfSmartyView.class.php文件中的部分代碼為
start line: 175
include (self::$cache->getFile($helperName, self::CACHENAMESPACE));

try ...{

if (self::isExistSmartyHelper($helperName)) ...{
sfLoader::loadHelpers(array($helperName, 'Smarty' . $helperName));
}

else ...{
sfLoader::loadHelpers(array($helperName));
}
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
------分隔線----------------------------
------分隔線----------------------------