基于PhalApi的Smarty拓展

#基于PhalApi的Smarty拓展php

##前言## 先在这里感谢phalapi框架创始人@dogstar,为咱们提供了这样一个优秀的开源框架.css

用过的童鞋都知道PhalApi是一个Api框架不提供view层的功能,可是不少童鞋有开发一个本身管理本身API的web界面的需求,或者是我的后台,那么是否意味着要去在学习另一种框架来实现呢?固然不是在以前也有童鞋放出过一个View拓展,使用以后仍是有一些不方便的地方,因此引入一个比较老牌的PHP模版引擎Smarty来解决这类问题,本拓展提供了对Smarty的封装,并且Smarty内容比较多在此处不会依依交与你们使用,但愿的童鞋能够本身探索关于Smarty的功能,有不便之处须要封装与之联系!git

注:本拓展并无开发完成,也没进行严格的测试,此版本为还处于开发阶段的鉴赏版.web

附上:api

官网地址:http://www.phalapi.net/数组

开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release框架

PhalApi Library:http://git.oschina.net/dogstar/PhalApi-Library函数

##初始化Smartyoop

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

这样就能够看到以下效果

##总结

当前只是提供了一个简单的封装还有不少须要优化封装的功能其余各位小伙伴的补充.

相关文章
相关标签/搜索