文档章节

基于PhalApi的Smarty拓展

喵了_个咪
 喵了_个咪
发布于 2016/07/04 15:47
字数 1115
阅读 488
收藏 2

#基于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文件目录放到需要用到的项目的拓展中即可.

但是view拓展和其他拓展有一些本质的区别就是需要有存放view页面的地方,这里使用一个干净的PhalApi项目进行演示,我们在public下创建如下结构

然后我们在init末尾中加入如下代码:

//接受一个参数,参数为view的路径
DI()->smarty = new Smarty_Lite('view');

现在我们就已经初始化好了PhalApi-Smarty

##一个简单的例子

我们在Default.Index接口中做如下修改:

public function index() {

    $param = array(
        'name' => '喵咪',
        'list' => array(
            array(
                "id"   => 1,
                "name" => "test"
            ),
            array(
                "id"   => 2,
                "name" => "test2"
            )
        )
    );
    DI()->smarty->setParams($param);
    DI()->smarty->show();
}

同时修改index.tpl:

<HTML>
<HEAD>
    <style type="text/css">
        p,table{
            margin: auto;
            width: 60%;
        }
    </style>
</HEAD>
<BODY>
Hello {$name}, welcome to smarty<br/>

<table border="1">
    {section name = sec loop = $list}
        <tr>
            <td>{$list[sec].id}</td>
            <td>{$list[sec].name}</td>
        </tr>
    {/section}
</table>

</BODY>
</HTML>

此时我们再次运行Default.Index接口就有如下显示:

setParams函数作为参数的媒介把接口中获取的参数放到模版里面进行处理,接受一个数组具体实现是对每一个参数进行assign操作,具体可以参考Smarty

我们在show默认不传递参数是,会更具模块名和接口名来匹配对于的模版,比如Default.Index就会匹配到view/Default/Index.tpl,当然我们也可以指定跳转到摸个模版,比如创建一个模版名称为test.tpl,然后创建一个Default.test接口,我们在index接口进行一些修改

DI()->smarty->show("Default.test");

这个时候我们访问Default.Index接口的时候就会先执行Default.Index的代码然后在执行,test方法的代码最好渲染Default中的test.tpl模版

注意:show跳转其他模块接口会执行跳转的接口,如果有参数验证会被拦截,所以使用场景比较适合处理用户登录过时跳转登录页面重新登录这类业务

##其他

如果大家在使用IDE开发的时候嫌DI->smarty没有提示的话可以在如下目录加入此注释

\PhalApi\PhalApi\DI.php

这样就可以看到如下效果

##总结

当前只是提供了一个简单的封装还有很多需要优化封装的功能其他各位小伙伴的补充.

© 著作权归作者所有

喵了_个咪
粉丝 337
博文 168
码字总数 216632
作品 4
杨浦
技术主管
私信 提问
加载中

评论(4)

喵了_个咪
喵了_个咪 博主

引用来自“卖萌的程序猿”的评论

php是最好的模板
29
卖萌的程序猿
卖萌的程序猿
php是最好的模板
喵了_个咪
喵了_个咪 博主
Smarty 对静态匹配有个毛病 是从 更目录开始的 已经建立了一个开源项目 可供参考 http://git.oschina.net/wenzhenxi/PhalApi-AdminLTE
海诺者
海诺者
图片为什么不显示呢?
PhalApi 2.1.2 发布,PHP轻量级开源接口框架

[前言] 感谢对PhalApi的关注!PhalApi是一个PHP轻量级开源接口框架,致力于快速开发接口服务。支持HTTP/SOAP/RPC等协议,可用于搭建接口/微服务/RESTful接口/Web Services。 为了提供更主流、...

暗夜在火星
2017/11/05
855
1
PhalApi三周年庆典纪念活动

前言: PhalApi是一个PHP轻量级开源接口框架,致力于快速开发接口服务。支持HTTP/SOAP/RPC等协议,可用于搭建接口/微服务/RESTful接口/Web Services,目前在码云平台上深受广大开发人员的喜欢...

暗夜在火星
2017/06/08
3
0
PhalApi 1.3.5 贺岁发布,PHP 轻量接口框架

[前言] 借春节来临之际, PhalApi(π框架)在此发布v1.3.5幺鸡贺岁小版本,同时祝愿各位同学新春快乐、万事如意! 基于老版本开发的应用可以无缝升级到v1.3.5版本,直接覆盖核心文件PhalApi...

暗夜在火星
2017/01/06
848
6
PhalApi-v1.3.2,一周年纪念版,轻量级接口框架

#PhalApi-v1.3.2 (一周年纪念版)发布,PHP轻量级开源接口框架# ##[前言]## 时隔一年PhalApi已经一岁了,从无到有在到活跃人数350+的社区,到28+落地项目,实用拓展17+,一切都离不开各位小伙伴的...

喵了_个咪
2016/01/09
1K
5
PhalApi(π框架) v1.4.1 发布,PHP 轻量级 API 接口开发框架

[前言] 夏天的脚步悄悄来临,在各位小伙伴的辛勤付出下,PhalApi迎来了新版本V1.4.1,在这次更新中着重以开发者便捷为本新增优化了很多功能,如对接口文档添加了各项重要功能可以直接在文档页面进...

喵了_个咪
2017/07/01
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
33分钟前
3
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
37分钟前
3
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部