symfony 结合 smarty 及相关的问题
来源:程序员人生 发布时间:2014-10-18 08:00:00 阅读次数:5548次
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));
}
}
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
------分隔线----------------------------
------分隔线----------------------------