结合thinkphp官网 3.1入门教程和3.2.1技术手册开始对thinkphp进行学习,thinkphp是mvc能够很好地分割各部分。
thinkphp的php执行代码大多是指控制器方法当中实现的,控制器方法可以没有对应的输出模板,如果有则输出模板会以html的形式与方法对应,数据库的操作是大多通过模型实现的。
1.修改项目路径(工作根目录)
thinkphp3.2.1默认工作根目录是/web/Applications
当用户访问http://localhost时会在该文件夹下自动生产相关的工程文件。
修改项目路径:在根目录下修改index.php
define('APP_PATH','./application/');
为
define('APP_PATH','./app/');
访问 http://localhost 自动生成相关文件
根目录下修改:
define('BIND_MODULE','Admin');
// 定义应用目录
define('APP_PATH','./App/');
2.在工作根目录文件夹下创建模块
在工作下新建文件夹Admin,并创建空白index.html 在根目录下index.php添加
//添加
define('BIND_MODULE','Admin');
// 定义应用目录
define('APP_PATH','./App/');
浏览器当中访问:http://localhost/index.php 便可以在admin模块当中自动生成所有的相关文件(类似于同一文件夹下的Home文件夹)
注意要在生成完所有之后注释掉define('BIND_MODULE','Admin');
3.thinkphp入口:
thinkphp 3.2.1只有一个默认的入口地址就是index控制器的index方法。
访问http://localhost等同于http://localhost/index.php/home/Index/index
4.thinkphp url
url路径:
http://serverName/index.php/模块/控制器/操作
模块Home (前台)
http://192.168.1.249/index.php/admin/Index/index
模块Admin: (后台)
http://192.168.1.249/index.php/Admin/Index/index
参数粗传递
http://192.168.1.249/index.php/home/Index/univpage/id/10002
thinkphp方法内可以使用U()函数创建URL U(控制器名/方法)
例如 myurl=U(Index/index)
5.视图view 模板
thinkphp3.2.1当中如果方法要对应着输出html 那么模板的位置在view文件夹下对应的控制器文件夹下的同名html文件夹。
通过$this->display ();启用模板;通过$this->aa = $bb;实现php到html的变量映射,在html 当中使用{$aa}接收。
例如
/web/App/Home/Controller/IndexController.class.php 里面的univpage()方法:
public function univpage($id) { $this->univ_id = $id;//变量映射 $this->display ();//启用模板 }
对应的模板位置为/web/App/Home/View/Index/index.html
<html> ................... <body> hello {$univ_id } </body> </html>
访问http://localhost/index.php/home/Index/univpage/id/10002 便可以输出id的值10002
6.模型model
模型的作用是用于数据库操作,可以方便简单的实现CURD,而且还可以实现自动获取表单,对提交表单进行自动验证等。
每个项目有一个连接的数据库配置文件,执行CURD命令时调用连接数据库。
每个项目的数据库连接配置都是在每个项目的/common/conf/config.php文件当中,如F:\web\App\Common\Conf\config.php,连接数据库是使用D和M时自动到config.php当中找到相关配置连接数据库。
'DB_DSN' => 'mysql://root:881234@192.168.1.249:3306/univinfo'
例如进行一下实例化操作:
$Data = M('think_data'); // 实例化Data数据模型
系统会自动使用/common/conf/config.php当中的数据库连接文件连接数据库,然后选择其中的think_data表。
当执行实例化对象create()函数时会自动获取表单传递过来的数据,
thinkphp提交表单:注意提交表单要,使用M()和D()时,一定要注意提交的表单的参数名要和数据库表当中的字段完全一致才能够执行自动匹配。
例如:
模板提交参数
<form action="__URL__/login_submit" method="get"> Name: <input type="text" name="user_name" /> Password: <input type="text" name="user_password" /> <input type="submit" /> </form>
控制器内方法接收传递过来参数
public function register_submit() { // echo "register_submit()"; $User = M ( 'univ_user_basic_info' ); // 实例化模型 $User->create (); // 获取post提交过来的表单(注意可能只是post可以) echo $User->user_name; // dump($User); //展示数据库状况 $User->add (); // 写入数据库 echo "register success"; }