㈠ 如何用thinkphp 构建一个简单的项目
1、使用sftp协议进行上传的操作:输入用户名和用户密码。
㈡ 如何让nginx支持ThinkPHP框架
让nginx支持ThinkPHP框架的做法:
1、打开nginx的配置文件,如果是想某个站点支持,请打开对应站点的配置文件
添加的代码如下:
.........................................
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
location ~ .php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
㈢ thinkphp视图模型怎么创建
视图模型
视图定义
视图通常是指数据库的视图,视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。
视图在有些数据库下面并不被支持,但是ThinkPHP模拟实现了数据库的视图,该功能可以用于多表联合查询。非常适合解决HAS_ONE 和 BELONGS_TO 类型的关联查询。
要定义视图模型,只需要继承ViewModel,然后设置viewFields属性即可。例如下面的例子,我们定义了一个BlogView模型对象,其中包括了Blog模型的id、name、title和User模型的name,以及Category模型的title字段,我们通过创建BlogView模型来快速读取一个包含了User名称和类别名称的Blog记录(集)。
class BlogViewModel extends ViewModel {
public $viewFields = array(
'Blog'=>array('id','name','title'),
'Category'=>array('title'=>'category_name', '_on'=>'Blog.category_id=Category.id'),
'User'=>array('name'=>'username', '_on'=>'Blog.user_id=User.id'),
);
}
我们来解释一下定义的格式代表了什么。
$viewFields 属性表示视图模型包含的字段,每个元素定义了某个数据表或者模型的字段。
例如:
'Blog'=>array('id','name','title');
表示BlogView视图模型要包含Blog模型中的id、name和title字段属性,这个其实很容易理解,就和数据库的视图要包含某个数据表的字段一样。而Blog相当于是给Blog模型对应的数据表定义了一个别名。
默认情况下会根据定义的名称自动获取表名,如果希望指定数据表,可以使用:
'_table'=>"test_db.test_table"
如果希望给当前数据表定义另外的别名,可以使用
'_as'=>'myBlog'
BlogView视图模式除了包含Blog模型之外,还包含了Category和User模型,下面的定义:
'Category'=>array('title'=>'category_name');
和上面类似,表示BlogView视图模型还要包含Category模型的title字段,因为视图模型里面已经存在了一个title字段,所以我们通过
'title'=>'category_name'
把Category模型的title字段映射为category_name字段,如果有多个字段,可以使用同样的方式添加。可以通过_on来给视图模型定义关联查询条件,例如:
'_on'=>'Blog.category_id=Category.id'
理解之后,User模型的定义方式同样也就很容易理解了。
Blog.categoryId=Category.id AND Blog.userId=User.id
最后,我们把视图模型的定义翻译成SQL语句就更加容易理解视图模型的原理了。假设我们不带任何其他条件查询全部的字段,那么查询的SQL语句就是
Select
Blog.id as id,
Blog.name as name,
Blog.title as title,
Category.title as category_name,
User.name as username
from think_blog Blog JOIN think_category Category JOIN think_user User
where Blog.category_id=Category.id AND Blog.user_id=User.id
视图模型的定义并不需要先单独定义其中的模型类,系统会默认按照系统的规则进行数据表的定位。如果Blog模型并没有定义,那么系统会自动根据当前模型的表前缀和后缀来自动获取对应的数据表。也就是说,如果我们并没有定义Blog模型类,那么上面的定义后,系统在进行视图模型的操作的时候会根据Blog这个名称和当前的表前缀设置(假设为Think_ )获取到对应的数据表可能是think_blog。
ThinkPHP还可以支持视图模型的JOIN类型定义,我们可以把上面的视图定义改成:
public $viewFields = array(
'Blog'=>array('id','name','title','_type'=>'LEFT'),
'Category'=>array('title'=>'category_name','_on'=>'Category.id=Blog.category_id','_type'=>'RIGHT'),
'User'=>array('name'=>'username','_on'=>'User.id=Blog.user_id'),
);
需要注意的是,这里的_type定义对下一个表有效,因此要注意视图模型的定义顺序。Blog模型的
'_type'=>'LEFT'
针对的是下一个模型Category而言,通过上面的定义,我们在查询的时候最终生成的SQL语句就变成:
Select
Blog.id as id,
Blog.name as name,
Blog.title as title,
Category.title as category_name,
User.name as username
from think_blog Blog LEFT JOIN think_category Category ON Blog.category_id=Category.id RIGHT JOIN think_user User ON Blog.user_id=User.id
我们可以在试图模型里面定义特殊的字段,例如下面的例子定义了一个统计字段
'Category'=>array('title'=>'category_name','COUNT(Blog.id)'=>'count','_on'=>'Category.id=Blog.category_id'),
3
视图查询
接下来,我们就可以和使用普通模型一样对视图模型进行操作了 。
$Model = D("BlogView");
$Model->field('id,name,title,category_name,username')->where('id>10')->order('id desc')->select();
看起来和普通的模型操作并没有什么大的区别,可以和使用普通模型一样进行查询。如果发现查询的结果存在重复数据,还可以使用group方法来处理。
$Model->field('id,name,title,category_name,username')->order('id desc')->group('id')->select();
我们可以看到,即使不定义视图模型,其实我们也可以通过方法来操作,但是显然非常繁琐。
$Model = D("Blog");
$Model->table(
'think_blog Blog,
think_category Category,
think_user User')
->field(
'Blog.id,Blog.name,
Blog.title,
Category.title as category_name,
User.name as username')
->order('Blog.id desc')
->where('Blog.category_id=Category.id AND Blog.user_id=User.id')
->select();
而定义了视图模型之后,所有的字段会进行自动处理,添加表别名和字段别名,从而简化了原来视图的复杂查询。如果不使用视图模型,也可以用连贯操作的JOIN方法实现相同的功能。
㈣ “thinkphp5.0”的安装步骤是什么
thinkphp框架是目前国内比较流行的PHP框架之一,不管是初学者还是老学员都能容易上手,快速,安全开发网站。具体安装步骤如下:
㈤ editplus怎么导入thinkphp框架
前段时间一直为TP寻找好用的在线编辑器而苦恼,经过多次尝试与修改后,终于成功地将编辑器集成到Thinkphp里
而且可以用直接上传和ajax两种方式处理内容。为了给一些还没能成功地集成fckeditor的同侪们一些启发与帮助,
兹将我的经验与体会描述如下:
应用目的:将FCKeditor编辑器集成到Thinkphp中,使用户能够在线像编辑Word一样处理即将发表的文字与图像。
应用软件与环境:apache服务器2.0以上版本,PHP版本5.0以上,mysql5.0以上;Thinkphp版本1.5或以上,Fckeditor版本2.x。
1、下载FCKeditor2.x版本,将解压后的文件夹FCKeditor复制到ThinkPHP文件夹下的Vendor目录下,以便符合THinkPHP的第三方类库引入规则。
2、修改参数:
首先,用EditPlus等软件打开FCKeditor目录下的fckeditor_php5.php文件,找到第130行。出现内容如下:
publicfunction__construct($instanceName)
{$this->InstanceName=$instanceName;
$this->BasePath='';
$this->Width='900′;
$this->Height='400′;
$this->ToolbarSet='Default';
$this->Value='';
$this->Config=array();
}
publicfunction__construct($instanceName){$this->InstanceName=$instanceName;
$this->BasePath='/bm/ThinkPHP/Vendor/FCKeditor/';$this->Width='900′;$this->Height='400′;
$this->ToolbarSet='Default';$this->Value=”;
其中,最关键的就是将basepath设置好。
里面填写的就是fckeditor_php5.php文件相对于网站文档根目录(document root)的路径。
其实这就是用以表征FCKeditor编辑器相对根目录的路径。比如服务器的文档根目录最下级是htdocs/或www/, 项目名为project,project项目文件夹下有Thinkphp系统文件包与项目文件包myapp。而且服务器没有对该项目设置虚拟主机的话, 此时的文档根目录仍是www/或htdocs/,那么应该是$this->basePath='/project/ThinPHP/Vendor/FCKeditor/';
若是设置了虚拟主机,即将project变为虚拟的文档根目录,通过某一域名能够直接访问网站项目的话,那么此时,$this->basePath='/ThinPHP/Vendor/FCKeditor/'; 其他的参数如宽度与高度可以填或不填,若填下的话就是编辑器的默认高与宽。InstanceName是编辑器所在标签的id与name,此时不用理会。其他参数也不用理会。
其次,在下面找到config.php文件,打开它,找到30与34行。需要改写的参数如下:$Config['Enabled'] = true ;$Config['UserFilesPath'] = ' ' ;
其中,第一个参数应该设为true.默认是true.第二个参数填写的是上传文件的路径,比如要显示的图片等。
我们在project目录下建立一个uploads文件夹,那么$Config['UserFilesPath'] = '/project/uploads/';
路径规则与上一个basepath一样。要是project是虚拟文档根目录的话,那么$Config['UserFilesPath'] =' /uploads/';
3、应用程序:
比如在myapp项目中Lib目录下IndexAction.class.php控制器类中的index方法中,当访问该程序时,输出的模板网页里有form表单, 要求用户输入一篇文章,那么就可以用到编辑器.代码示例如下,只显示与fckeditor有关的代码,其他代码会略。
首先是服务器程序:
publicfunctionindex()
{……//其他代码
vendor(“FCKeditor.fckeditor”);//包含FCKeditor类库,TP引入第三方类库的系统方法,其路径是相对于vendor目录来说的。
$editor=newFCKeditor();//实例化FCKeditor对象
$editor->Width='980′;//设置编辑器实际需要的宽度。此项省略的话,会使用默认的宽度。
$editor->Height='400′;//设置编辑器实际需要的高度。此项省略的话,会使用默认的高度。
$this->Value=”;//设置编辑器初始值。也可以是修改数据时的设定值。可以置空。
$editor->InstanceName='comment';//设置编辑器所在表单内输入标签的id与name,即<input>标签的id与name。此处假
//设为comment.此处不可省,也要保持唯一性。表单上传到服务器处理程序后,即可通过$_POST['comment']来读取。
$html=$editor->Createhtml();//创建在线编辑器html代码字符串,并赋值给字符串变量$html.
$this->assign('html',$html);//将$html的值赋给模板变量$html.在模板里通过{$html}可以直接引用。
…….//其他代码,包括输出模板。
}
其次是对应的html模板即index 文件。只需要在需要的地方插入编辑器即可,其他代码与一般的<form>写法一样。
…….<!–其他html代码 –>
<div>
<form id=”commentform” name=”commentform” action=”">//action里填写表单处理程序,如'!-APP-!/Index/check'。
指的是IndexAction类下的check()方法来处理提交的表单数据。
<tablestyle=”width:100%;”>
<tr>
<tdstyle=”text-align:left;”>添加新评论:
</td>
</tr>
……//其他表单填写项
<tr>
<td>{$html}</td>
</tr>
<tr>
<td><inputtype=”submit”value=”提交评论”>
</td>
</tr>
</table>
</form>
</div>
到这里, 已经可以用了。在表单处理程序里像通常处理表单元素那样就行。但是,有的时候项目移植后,上传的图片等链接路径会被错误编译, 以致不能正确显示图片等东西。通常是双引号解析错误,我还没有解决。要想不出错的话,可以采取ajax的方式处理表单数据。
不过在进行ajax处理之前,要先用一段js代码将编辑器中的值赋给表单中name是instacename的值的表单元素。比如,本项示例中要用ajax对表单进行处理的话,index模板文件中必须在表单处理前运行的一段js代码为:
…….//其他js代码
var editor=FCKeditorAPI.GetInstance('comment');//comment是设置的instanceName值.
document.commentform.comment.value=editor.EditorDocument.body.innerHTML;//将编辑器中内容处理后的源代码
//赋值给commentform表单的comment 属性元素值。
……//其他js代码
注:个人认为xajax比较不错,只需要将主要精力花在后台程序上。我也是用xajax进行数据处理的。前台代码很简单。
㈥ thinkphp怎么部署在阿里云的ubuntu上
这一时半会说不明吧吧~~现在服务器上搭建 apache+php+mysql环境 或者nginx+php+mysql环境 然后直接再直接把thinkphp的代码放到指定的www目录下就行了。关键那个搭建环境步骤比较多 我以前写过这个环境在cenotos上搭建的步骤~~~博客上写的
㈦ thinkphp怎么部署到服务器
直接上传,前提是服务器上必须有环境
㈧ 怎么在PhpStorm之类的IDE中开发thinkphp应用
你是说做个简单的项目吗?
首先你得安装配置好服务器。现在网上有很多集成包,比如wampserver。安装完后里面有很多服务器,一般用Apache。
现在打开phpstorm,如果你会thinkPHP之类的框架,将他的模板复制到你的打开目录下
像我的打开入径是
㈨ php项目如何部署在服务器上
一、阿里ECS服务器配置
1.因为线上已经有几个站点了.所以要配置ngnix多站点
2.阿里云ecs目录结构,ngxin 在/etc/nginx/目录下,配置的地方主要是nginx.config文件。或者在conf.d新建一个配置文件然后在include到nginx.config文件中
㈩ php manager for iis 7怎么部署thinkphp
你下载的是一个类似于asp的链接文件,而不是你原本的文件!需要在服务器端执行后才能到达正确的下载地址,所以最好点击进入网页获得正确的下载地址例如后缀类似于rar的,再使用下载地址,如果不能获取,就可能是服务器出了问题。无法访问了PHP是一种服务器端HTML-嵌入式脚本描述语言。 其最强大和最重要的特征是其数据库集成层,使用它完成一个含有数据库功能的网页是不可置信的简单。在HTML文件中, PHP脚本程序(语法类似于Perl或者c语言)可以使用特别的PHP标签进行引用, 这样网页制作者也不必完全依赖HTML生成网页了。由于PHP是在服务器端执行的, 客户端是看不到PHP代码的。 PHP可以完成任何CGI脚本可以完成的任务,但它的功能的发挥取决于它和各种数据库的兼容性。 PHP除了可以使用HTTP进行通信,也可以使用IMAP, SNMP, NNTP, POP3协议。
建议你去后盾人那学习,最近他们在搞实训班培训的活动