您的位置:首页 > 编程语言 > PHP开发

thinkphp3.2 微博系统项目

2017-02-04 13:50 183 查看
深入Thinkphp3.2框架遇到很多小问题 果然在学习语法知识的过程中 做项目是最好的检验成果

问题:

MVC:

M:Model模型、V:View视图、C:Controller控制器
View视图:存放模板文件.html,结合html+css+jquery等将完整的页面在Controller中通过$this->display()渲染出来
Controller控制器:控制器可以将View AJAX传递过来的数据 再次传递给Model层。通过D方法等
Model模型:接收Controller传递过来的数据 进行访问数据库 增删改查  并对接收的数据进行服务器端的自动验证和自动完成等操作


submit

<input type="submit">  //点击按钮表单自动跳转
<input type="button">  //点击按钮 不会跳转 类似虚构的submit 只是不会提交


a标签

<a href="#"></a>    //#默认#Top 点击滚动条会自动返回顶部
<a href="javascript:void(0)"></a>   //不会返回顶部


模板文件中使用循环、条件等语句

Controller层:

$list['data'] = 0;
$this->assign('list',$list);


View层:

<switch name="list">   //注意此处name值没有$
<case value="$list['data']">
<p>$list['data']<p>
</case>
<default />
<h1>$list['data']<h1>
</switch>


模板变量和系统变量常量

*a. //可以在Config中设置模块替换变量*


'TMPL_PARSE_STRING' => array(
'__CSS__' => __ROOT__.'/Public/'.MODULE_NAME.'/css',
'__JS__' => __ROOT__.'/Public/'.MODULE_NAME.'/js',
'__IMG__' => __ROOT__.'/Public/'.MODULE_NAME.'/img',
),


View中即可直接使用
__JS__、__IMG__、__CSS__


*b. 在View中也可以使用(模板)系统常量

网站使用Think.const 输出Think.server.script_name}和{Think.SERVER.script_name}等效

c. 在View中也可以使用(模板)系统变量

{$Think.server.script_name} // 输出$_SERVER变量
{$Think.session.session_id|md5} // 输出$_SESSION变量
{$Think.get.pageNumber} // 输出$_GET变量
{$Think.cookie.name}  // 输出$_COOKIE变量


注意一:Action中使用的系统常量不可以直接在模板文件中使用

比如:

Action中:MODULE_NAME //输出模型名称
模板中:{:MODULE_NAME}


注意二:在JS文件中直接使用thinkphp的常量是不被解析替换的,所以要先在模板文件的元素中对thinkphp的常量进行定义

比如:

模板文件:

<script type="text/javascript">
var app="__APP__";
</script>
<script src="__PUBLIC__/Js/test.js"></script>


test.JS文件:

$(function(){
alert(__APP__);
});


CSS文件中和JS文件中引用IMAGE图片

Public目录中含有CSS、JS、IMG目录

如果在CSS文件中引用IMG图片:

background:url("../IMG/image.png");


如果在JS文件中引用IMG图片:

不可以直接使用../,只能通过调用模板替换变量等方式获取路径

$('#image').attr('src',__Public__/IMG/image.png);


Crop裁剪方法的BUG

```
$image = new Image();
$image->open($url);
*$image->crop($w,$h,$x,$y)->save($url);*
$image->thumb(200,200)->save($bigPath);


在FileModel的crop方法中我使用该代码,一直提示File控制器/crop方法404错误,后来才知道在tp框架中crop方法与thumb方法结合(其它方法未知),会导致这样的错误发生,因此解决方法,将crop方法与Open连缀调用,如下:

$image->open($url)->crop($w,$h,$x,$y)->save($url);


Volist/empty等标签name属性 (BUG)

$list = array("a"=>"hello","b"=>"world");
$this->assign('list',$list);
<volist name="list">
{$list['a']}
</volist>


注意:不论传递过来的是对象还是数组,在这些标签中name属性没有$

模板中使用U函数并且get传递参数

当我想点击某段文字,跳转到另外一个页面时候

<a href="{:U('Space/index/id/{$id}')}">点击跳转space页面</a>


此时不能在U函数里面get传递参数id,解决方法如下:

<a href="{:U('Space/index',array('id'=>$id))}">点击跳转space页面</a>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thinkphp ajax