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)
执行
安装完后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文件
内容如下
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中
按上面的三步即可完成一个简单版本的symfony+smarty 的演示
中间可能会出现一些错误,请参考doc目录下面的pdf文档
下面是出现的部分错误:在调试状态下会出现
”Unable to load "SmartyUrlHelper.php" helper “
相关的提示
针对此问题我们可以对d:/apps/www/symfony/askeet/plugins/sfSmartyViewPlugin/lib/sfSmartyView.class.php
做如下的修改
即d:/apps/www/symfony/askeet/plugins/sfSmartyViewPlugin/lib/sfSmartyView.class.php文件中的部分代码为
照上面的方法做过修改后 相关的警告会在 log/frontend_dev.log中记录
提示:上面的有些地方要根据你的主机来确定,不可照搬
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
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
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
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
.
2
libsfSmartyView.
class
.php.orig Thu Jan
25
11
:
31
:
27
2007
+++ sfSmartyViewPlugin - 0.1 . 2 libsfSmartyView. 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()
*
+++ sfSmartyViewPlugin - 0.1 . 2 libsfSmartyView. 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));
}
}
catch (sfViewException $e) {
if (!strpos($e->getMessage(), 'Smarty' . $helperName)) {
throw $e;
}
}
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;
}
include (self::$cache -> getFile($helperName, self::CACHENAMESPACE));
try {
if (self::isExistSmartyHelper($helperName)) {
sfLoader::loadHelpers(array($helperName, 'Smarty' . $helperName));
}
else {
sfLoader::loadHelpers(array($helperName));
}
}
catch (sfViewException $e) {
if (!strpos($e->getMessage(), 'Smarty' . $helperName)) {
throw $e;
}
}
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;
}
照上面的方法做过修改后 相关的警告会在 log/frontend_dev.log中记录
提示:上面的有些地方要根据你的主机来确定,不可照搬