smarty

构建mvc框架学习

﹥>﹥吖頭↗ 提交于 2020-03-16 12:01:42
某厂面试归来,发现自己落伍了!>>> 做了那么久PHP开发,开始尝试去做一个简单的mvc框架。 一、首先确定目录结构 由于不太想弄得太复杂的结构,因此,将所有的目录存放于libs中,项目根目录只留一个index.php以及config.php,形成一个类似于thinkPHP的单一入口模式。 libs中目录结构为Controller(控制器),Model(模型),View(视图),ORG(第三方类库) 单一入口模式的优点: 1.可以在入口文件中完成一系列所有文件都要进行的一些相同操作,例如安全性检查,数据安全拦截,特殊字符过滤,数据统计等多种功能 2.在单一入口模式可以使整个项目看上去更规整,更易于日后的维护 3.单一入口模式更易于拦截非法请求 同时单一入口模式也存在一些缺陷,例如url不美观等问题 二、视图引擎的选择 好的视图引擎: 1.基于该引擎开发出的视图模板更贴近标准的html等 2.语法简单易懂 3.良好的缓存机制 4.扩展性能好 5.网络资源多(其实就是有问题能度娘的到,发帖能有一堆人顶!d=====( ̄▽ ̄*)b) 基于上述种种原因,lz选择了smarty模板引擎,不为啥,任性!(主要还是因为我最常用的就是介个==、),在lz的纠结之下,终于选择了smarty-3.1.29版本 三、模板引擎引入、配置 1.smarty获取

PHP 模板引擎SMARTY 原理

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-16 11:55:12
某厂面试归来,发现自己落伍了!>>> 一、MVC需要模板 MVC最早是在SmallTalk语言的开发过程中总结出的一种设计模式,MVC分别代表了"模型"、"视图"和"控制",目的就是让不同的开发角色在大中型项目中各司其职。在网络应用程序的开发中,可以用下图来表示各概念之间的关系。 该图展示了一个简单的WEB应用程序,用户在浏览器上看到信息是数据库服务器上的内容,但在这之前经过了应用服务器加工。开发人员负责的就是建立数据结构、处理数据的逻辑以及表示数据的方法。 96年CGI在中国开始流行的时候,早期的WEB程序员都是从HTML开始自学成材的,在PERL中print一行行的HTML并不是一件难事,但是随着网络的一步步提速,页面大小也从当初的二、三十K暴涨了十倍。写CGI程序就产生了一个迫切的要求:分开PERL和HTML源码。于是,社会进步体现在开发小组内部的分工上。由于美工和程序员对互相的工作并不是十分熟悉,在进行合作的过程中需要用一种约定的"语言"进行交流。 这种语言并不是我们的母语或者英语,术语叫做"模板",逻辑和表示依靠它联系。它是结合了HTML和脚本语言特征的一种表达方式。通过这种方式,表示层可以按照用户所希望的格式来显示经过逻辑层处理过的数据。如果你有Windows平台下MFC的开发经验,那么一定会很熟悉Document/Document Template/View的封装

Hello 2019! Hanjst/汉吉斯特 模板语言及引擎创新发布

故事扮演 提交于 2020-03-11 22:59:53
Hello 2019! Hanjst/汉吉斯特 模板语言及引擎创新发布。 值此一元复始之际,恭祝 网友们新年万事如意! 寄望 Hanjst/汉吉斯特能帮助大家从各种模板中解脱出来,为人类做出更大的贡献。 1. 背景 网页模板语言/引擎缘起于 MVC 思想的引入。当软件项目膨胀复杂到足够大时,软件研发人员与UI/UE设计人员就需要分别独立出来,其中设计制作人员工作的V(View)部分需要用模板语言与引擎。 模板语言及引擎的设计与研发工作是一项既简单又复杂的工作。简单地说,模板就是一种变量替换的工作,在模板中预留相应的占位符和变量标记,模板引擎在工作时在相应的占位符将对应的变量替换为实际对应的数值即可。 复杂地说,模板语言是一种全新表达语言的设计,设计一门语言,其难度是可想而知的,这门语言要能够满足日常沟通之需要,首先或入门的是语言设计者要考虑的,是该模板语言能够普遍接受和广泛使用,这样语言才有生命力。无疑,简洁而表意丰富是重要而优先的考虑项。 先行者已经在模板领域创制出大量符合各种需求的模板语言与模板引擎,这里是一个简单的归集 -R/U2SJ , 为了更好的梳理其发展类别,我们绘制了一个 Mind map: Fig1. 网页模板语言分类概括 2. 问题讨论 如在Fig1中所展示的,模板语言及引擎有很多种类,每个分类下面又有不同的应用实例,可谓多姿多彩,琳琅满目。实际上

ecshop 后台分页功能

泄露秘密 提交于 2020-03-03 14:03:33
Ecshop分页规则,分以下几个步骤 1.点击类别,获取第一页获取默认分类列表数据 2.点击“下一页”,采用ajax调取分页内容 实例分析(比如订单列表分页admin/order.php) 1.先写一个function order_list() 模块,里面要包括可以进行排序,分页,查询等功能 2.在order.php里面写一个elseif ($_REQUEST['act'] == 'list') ,这里是显示默认分页数据 3.在order.php写一个query( listtable.js默认的是先读取 $_REQUEST['act'] == 'query' )排序、分页、查询都在query里面完成 4.html页面(默认order_list.html完整代码) 实战 ”微仓功能“ 1.我先写一个function depot_log_list,可以进行排序、分类、查询。这个function里面很有讲究的 重点代码 function depot_list() { //*f.获取上一次保存的查询条件(如果上一次有进行查询过,则直接从f开始) $result = get_filter(); if ($result === false) {    // a.查询条件    $filter['goods_id'] = empty($_REQUEST['goods_id']) ? '' :

基于PhalApi的Smarty拓展

喜欢而已 提交于 2020-03-02 08:30:19
#基于PhalApi的Smarty拓展 ##前言## 先在这里感谢phalapi框架创始人 @dogstar ,为我们提供了这样一个优秀的开源框架. 用过的童鞋都知道PhalApi是一个Api框架不提供view层的功能,但是很多童鞋有开发一个自己管理自己API的web界面的需求,或者是个人后台,那么是否意味着要去在学习另外一种框架来实现呢? 当然不是 在之前也有童鞋放出过一个View拓展,使用之后还是有一些不方便的地方,所以引入一个比较老牌的PHP模版引擎 Smarty 来解决这类问题,本拓展提供了对Smarty的封装,而且Smarty内容比较多在此处不会依依交与大家使用,希望的童鞋可以自己探索关于Smarty的功能,有不便之处需要封装与之联系! 注:本拓展并没有开发完成,也没进行严格的测试,此版本为还处于开发阶段的鉴赏版. 附上: 官网地址: http://www.phalapi.net/ 开源中国Git地址: http://git.oschina.net/dogstar/PhalApi/tree/release PhalApi Library: http://git.oschina.net/dogstar/PhalApi-Library ##初始化Smarty PhalApi-Smarty的初始化也和其他拓展一样,我们只需要把上方 PhalApi Library

smarty中section的使用

若如初见. 提交于 2020-03-02 08:04:38
在smarty的使用过程中,有很多时候需要将一个数组输出到模板中来处理,以下将演示如何将一个索引(index)数组和关联(assocaite)数组在页面中展现出来。 本文中假设有如下一个索引数组 1、索引数组 1 $people = array ( ' tony ' , ' sweety ' , ' abc ' , ' four ' ); 2 $smarty -> assign( ' people ' , $people ); 在模板中显示: 1 {section name=n loop=$people} 2 name:{$people[n]} < br /> 3 {/section} 这样在模板中就可以显示出这个数组的内容了。结果如下: 1 name:tony 2 name:sweety 3 name:abc 4 name:four 2、关联数组 1 $arr = array ( 2 array ( ' id ' => 1 , ' title ' => ' title1 ' ) , 3 array ( ' id ' => 2 , ' title ' => ' title2 ' ) , 4 array ( ' id ' => 3 , ' title ' => ' title3 ' ) 5 ); 6 7 $smarty -> assign( ' news ' , $arr );

PHP Smarty的section详解

此生再无相见时 提交于 2020-03-02 07:26:03
在smarty的使用过程中,有很多时候需要将一个数组输出到模板中来处理,以下将演示如何将一个索引(index)数组和关联(assocaite)数组在页面中展现出来。 本文中假设有如下一个索引数组 1、索引数组 1 $people = array ( ' tony ' , ' sweety ' , ' abc ' , ' four ' ); 2 $smarty -> assign( ' people ' , $people ); 在模板中显示: 1 {section name=n loop=$people} 2 name:{$people[n]} < br /> 3 {/section} 这样在模板中就可以显示出这个数组的内容了。结果如下: 1 name:tony 2 name:sweety 3 name:abc 4 name:four 2、关联数组 1 $arr = array ( 2 array ( ' id ' => 1 , ' title ' => ' title1 ' ) , 3 array ( ' id ' => 2 , ' title ' => ' title2 ' ) , 4 array ( ' id ' => 3 , ' title ' => ' title3 ' ) 5 ); 6 7 $smarty -> assign( ' news ' , $arr );

how to foreach an array variable created with recursive function in Smarty

跟風遠走 提交于 2020-03-02 06:56:47
问题 I have an array which I created in php with a recursive function, I do not know how many dimensions, how can I use in Smarty ? I trying use this code : {foreach $myArr as $items} <li> {$items.title} {if $item.submenu} <ul> {foreach $items.submenu as $items2} <li>{$items2.title}</li> {/foreach} </ul> {/if} </li> {/foreach} But this code is for just 2 levels, may be my array have 3 or 4 or ... levels. UPDATE: I found the solution, in my solution I use Smarty functions : {function name=menu

smarty foreach 最全用法

送分小仙女□ 提交于 2020-03-02 03:52:49
<?php $search_condition = "where name like '$foo%' " ; $sql = 'select contact_id, name, nick from contacts ' . $search_condition . ' order by name' ; $smarty -> assign ( 'results' , $db -> getAssoc ( $sql ) ); ?> The template which display "None found" if no results with {foreachelse}. 借助{foreachelse}标记在没有结果时模板输出"None found"字样。 {foreach key = cid item = con from =$results} < a href = "contact.php?contact_id={$cid}" > {$con.name} - {$con.nick} </ a > < br /> {foreachelse} No items were found in the search {/foreach} .index index contains the current array index, starting with zero.

关于smarty二维数组循环显示,如何写section语句。

半世苍凉 提交于 2020-03-01 11:44:10
关于smarty二维数组循环显示,如何写section语句。附上二维数组。 [code language=php]$obj=array(array('cheng','male','wuhan'), array('zhao','male','nanchang'), array('li','male','wuhan'));[/code] 我想要的效果是用表格把结果列出来。每行各是一维数组,单元格是一维里的元素。。 我想了一个上午弄不出头绪。。smarty手册上没给出数组的例子,只写了结果。 哪位大牛帮我解决下问题 最佳答案 {section name=sec loop=$obj} {section name=subsec loop=$obj[sec]} {$obj[sec][subsec]} {/section} {/section} --------------------------------------------———————————————————— <table> {section name=sec loop=$obj} <tr> {section name=subsec loop=$obj[sec]} <td>{$obj[sec][subsec]}</td> {/section} </tr> {/section} </table> 来源: oschina 链接: