开发者社区> 问答> 正文

php Smarty ?报错

第一次搞PHP,Smarty 模板框架,3.0.8版本

{{foreach $NewsRotaryView as $value}}
    <div>
        <a lazyload="{{$value.bpic|replace:"_s":"_b"}}"></a>
        <p>{{$value.title|truncate:30}}</p>
    </div>
{{/foreach}} 

|replace:"_s":"_b"

|truncate:30 

这个2个,都报错,写法是看,Smarty 文档写的,不知道对不对,和版本有没关系,或者还是什么地方没有配置好。

"{{" 双大括号是我自定义配置的,这个没问题。

求指点。

展开
收起
爱吃鱼的程序员 2020-06-22 13:33:42 439 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    没记错的话,replace和truncate都是插件,看看这两个插件在吗

    插件不在会报错的

    是配置文件里面,没有配置插件,导致找不到插件。缺少:$this->setPluginsDir(array(SMARTY_PLUGINS_DIR,'/common/smarty/plugins/'));感谢您的解答。回复 @Enterprise:没有错误提示吗?--汗,这2个不是,smarty自带的吗,这个还真不知道是插件,一直是搞C#的,明天回公司在研究下,谢谢啦。smarty这玩意就是一跎屎,果断放弃它,才能拿高薪。回复 @月影又无痕:也就是说高薪人员,连这个问题都解决不了,还是不屑解决。我觉得,你的薪水低,与这东西的影响有关系。请先解决问题,在说话把错误贴出来。虽然也有用过Smarty~现在看依然觉得很......头大 @欣儿呃~就是把模板的处理放到前端,后端只返回JSON吗?youku的体验做的很差哈哈回复 @ljz:不是。JS框架 @EnterprisePHP本身就是一个很好的模板引擎不需要第三方的介入了~~性能没的说 @欣儿改成Smarty???回复 @Enterprise:现在看的最多的是js的前端框架。土豆,优酷这些都在朝这方面改版 <ul><li>友情链接:</li><{foreachfrom=$link_dataitem=link_data}>    <li><atarget="_blank"title="<{$link_data.note}>"><{$link_data.name}></a></li><{/foreach}></ul>




    <?php/***********************************#->版本:rxcms0.1#->日期:1999年9月99日#->by铂金小狗#->bynotepad++utf-8***********************************//***********************************加载SMARTY类***********************************/require_once'smarty/libs/Smarty.class.php';//此处大小写必须一直,否则上传至LINUX环境报错/***********************************实例化SMARTY类***********************************/$smarty=newSmarty();/***********************************设置SMARTY***********************************/$smarty->template_dir='templates';//设置SMARTY模板目录$smarty->compile_dir='smarty/templates/templates_c';//设置SMARTY编译目录$smarty->config_dir='smarty/templates/config';//设置SMARTY的CONFIG的目录$smarty->cache_dir='smarty/templates/cache';//设置SMARTY的缓存目录$smarty->caching=false;//是否开启缓存$smarty->left_delimiter="<{";//设置SMARTY模板左包含符号$smarty->right_delimiter="}>";//设置SMARTY模板右包含符号?>



    我靠...楼主..你语法都不对...参看我的写法和配置!~~双引号里面双引号

    引用来自“铂金小狗”的答案

    我靠...楼主..你语法都不对...参看我的写法和配置!~~

    搞定,换了一个方法:

    写法:{{$value.title|mb_substr:0:5:'utf-8'}}这样就对了,上面写错了,应该还是缺少,插件方法。mb_substr这个好像是PHP自带的方法。

    Smarty查看了下,插件:smarty/plugins/modifier.truncate.php有这个类

    functionsmarty_modifier_truncate($string,$length=80,$etc='...',$break_words=false,$middle=false){if($length==0)return'';if(is_callable('mb_strlen')){if(mb_detect_encoding($string,'UTF-8,ISO-8859-1')==='UTF-8'){//$stringhasutf-8encodingif(mb_strlen($string)>$length){$length-=min($length,mb_strlen($etc));if(!$break_words&&!$middle){$string=preg_replace('/\s+?(\S+)?$/u','',mb_substr($string,0,$length+1));}if(!$middle){returnmb_substr($string,0,$length).$etc;}else{returnmb_substr($string,0,$length/2).$etc.mb_substr($string,-$length/2);}}else{return$string;}}}//$stringhasnoutf-8encodingif(strlen($string)>$length){$length-=min($length,strlen($etc));if(!$break_words&&!$middle){$string=preg_replace('/\s+?(\S+)?$/','',substr($string,0,$length+1));}if(!$middle){returnsubstr($string,0,$length).$etc;}else{returnsubstr($string,0,$length/2).$etc.substr($string,-$length/2);}}else{return$string;}}



    但是,就是不支持 {$articleTitle|truncate:30}这样的写法,是不是我哪里没配置好?

    2020-06-22 13:33:58
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载