symfony 结合 smarty 及相关的问题

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 . 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()
      *

即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;
    }
 

照上面的方法做过修改后 相关的警告会在 log/frontend_dev.log中记录


提示:上面的有些地方要根据你的主机来确定,不可照搬
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值