>

ThinkPHP写第二个模块应用,浅析ThinkPHP的沙盘输出

- 编辑:www.bifa688.com -

ThinkPHP写第二个模块应用,浅析ThinkPHP的沙盘输出

找到项目文件夹下面的Lib/Action这个目录,在下面有个创建好的例子IndexAction.class.php,加入我们创建的是admin这个项目,那么./admin/Lib/Action/IndexAction.class.php,这个模块是默认加载的模块。在ThinkPHP中,自动加载的动作、方法、操作等等都是以index命名的。
下面,我们创建一个自己的模块,比如UserAction,class.php(注意命名规则),我们编辑这个文件:

ThinkPHP中的每一个xxxAction.class.php文件就代表着一个应用模块,这个Action中的每一个方法(function)代表着一个操作,操作可以分为有输出到模板的操作和只具执行不需要输出的操作。
打开Myapp/Lib/Action/IndexAction.class.php文件,我们可以看到里面的基础代码:

//建立一个php project,然后建立俩个项目文件夹,并且引入thinkPHP文件夹。
//建立俩个入口文件,对应前台index.php与后台admin.php,然后把
//并且建立 index.php
 define("THINK_PATH","./ThinkPHP");
 define("APP_NAME","GDApp");
 define("APP_PATH","./GDApp");
 require(THINK_PATH."/thinkPHP.php");
 App::run();

复制代码 代码如下:

class IndexAction extends Action{
public function index(){
}
}

//建立admin.php

<?php
//先继承Action这个类,注意:文件名要与类名保持一致
class UserAction extends Action
{
//每个模块中默认加载的动作(操作、方法)是index方法
function index ()
{
echo '你来到了user模块';
}
//方法(操作、动作)命名规则是:第一个单词小写紧跟着的首字母大写
function listName()
{
echo '你的名字是'.$_GET['name'];
}
}
?>

对此,需要指出一下几点:

 define("THINK_PATH","./ThinkPHP");
 define("APP_NAME","admin");
 define("APP_PATH","./admin");
 require(THINK_PATH."/thinkPHP.php");
 App::run();
 //这样就可以生成项目文件的内容,对应中lib
下有来个文件夹,Action 与 Model,分别为控制器与模型层

接下来在浏览器测试:
输入:
输入:
输入:
输入:

1.在ThinkPHP的开发中,要增加一个应用模块,就要在Action文件夹里建立一个类,类的文件命名格式是“模块名称 Action.class.php”。例如我们这里的应用模块是Index,所以定义文件名为IndexAction.class.php。
2.应用模块类的定义要继承框架的Action类。要为这个应用模块添加一个操作,则定义一个以此操作为命名的function.例如上面的index操作。

1:控制器:
定义自己的控制器需要注意:模块名 Action.class.php为控制器,
并且控制器中有一个模块名方法,这里为index模块以及indexAction.class.php控制器。
class IndexAction extends Action{
public function _initialize(){
             header("Content-Type:text/html; charset=gb2312");
}
    public function index(){
       $this->display();
    }
    public function show(){
       echo "dsas";
    } 
}
知道这一个,看输入浏览器的网址

您可能感兴趣的文章:

  • thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
  • Thinkphp中的curd应用实用要点
  • ThinkPHP模板替换与系统常量及应用实例教程
  • ThinkPHP行为扩展Behavior应用实例详解
  • ThinkPHP应用模式扩展详解
  • 解密ThinkPHP3.1.2版本之独立分组功能应用
  • thinkPHP5.0框架URL访问方法详解
  • thinkPHP5.0框架命名空间详解
  • thinkPHP5.0框架引入Traits功能实例分析
  • ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
  • thinkPHP5.0框架应用请求生命周期分析

通常一个应用模块中,会有若干操作(function)需要有与用户交互的页面,这就需要用到模板输出,ThinkPHP本身已内置了一套具有ThinkPHP特色的,很强大易扩展但应用非常方便兼简单的模板引擎。
在应有模块中,如果某个操作是需要页面显示的,只要对应在Myapp/Tpl/default/里建立一个文件夹,文件夹以应用模块的名称来命名,然后在这个文件夹下,建立一个以这个function名称来命名的html文件,就可以在这个方法中使用$this->display()方法来直接调用该模板。(当然也可以调用其它模块下的其它模板或显式指定模板文件位置和名称,由于是循序渐进式的学习,就让我们先忽略吧)了解这些理论后,我们先简单实操一下这些知识。
(1)在Myapp/Tpl/default/下建立一个文件夹,根据应用模块的名称,我们将这个文件夹命名为Index
(2)在Myapp/Tpl/default/Index/下建立一个html文件,根据操作名称,我们命名该文件为index.html
(3)打开Myapp/Lib/Action/IndexAction.class.php文件,修改代码为

2:模型层:  

<?php
class IndexAction extends Action{
public function index(){
$value =  'hello,ThinkPHP';
$this->assign('name',$value);
$this->display();
}
}
?>

操作数据库前我们需要在配置文件中加入数据库连接

(摘自手册:ThinkPHP模板指南,此后的知识要点均来自ThinkPHP官方手册,不再申明)
在Action类里面使用 assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值。

    'DB_TYPE'=>'mysql',

$this->assign('name',$value);

   'DB_HOST'=>'localhost',

// 下面的写法是等效的

   'DB_NAME'=>'think_Php100',

$this->name = $value ;

   'DB_USER'=>'root',

// 模板变量赋值后就需要调用模板文件来输出相关的变量,模板调用通过display方法来实现

   'DB_PWD'=>'',

$this->display();

   'DB_PORT'=>'3306',

4 打开Myapp/Tpl/default/Index/index.html文件,代码为

   'DB_PREFIX'=>'think_',

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>{$name}</title>
</head>
<body>
测试输出: {$name}
</body>
</html>

假设我们建立了一个think_blog表

此处注意:模板变量使用{$变量名称}这种标签进行输出。

接下来,我们在LibModel目录下面创建一个BlogModel.class.php 文件,内容如下:

不同的模板变量类型,使用不同的标签,标签可以自行另外定义,暂且不理会。

class BlogModel extends Model{

5 打开浏览器输入地址:<

}

附加补充知识:

class IndexAction extends Action{

1 如果要同时输出多个模板变量,可以使用下面的方式:

   public function index(){

$array = array();
$array['name']  =  'thinkphp';
$array['email']  =  '123456@vip.qq.com';
$array['phone']  =  '123456';
$this->assign($array);

     $Blog = new BlogModel();

这样,就可以在模板文件中同时输出name、email和phone三个变量。

$list = $Blog->findAll();

2 我们使用上面的变量定义,将整个数组定义为一个模板变量来输出

dump($list);

$array = array();
$array['name']  =  'thinkphp';
$array['email']  =  '123456@vip.qq.com';
$array['phone']  =  '123456';
$this->assign('array',$array);
$this->display();

 }

在html中,要输出$array['name']的值,代码是
{$array.name} 或 {$array['name']}

}

3 将这个数组循环输出

3:由于前后台都有配置文件config.php,为了方便一起,统一配置。在php project建立一个config.inc.php文件
内容:
 return array (
    'DB_TYPE'               => 'mysql',     // 数据库类型
'DB_HOST'               => 'localhost', // 服务器地址
'DB_NAME'               => 'think_php',  // 数据库名
'DB_USER'               => 'root',      // 用户名
'DB_PWD'                => '123456',     // 密码
'DB_PORT'               =>  3306,        // 端口
'DB_PREFIX'             => 'think_',    // 数据库表前缀
'DB_SUFFIX'             => '',          // 数据库表后缀
"APP_DEBUG"             =>TRUE,
 )
那么config中为了引用该文件,写成
return require "config.inc.php";
//现在就是大家共同倒入一个文件

(1) IndexAction.class.php中代码更改如下

4:在php project中建立一个public文件夹,在建立文件夹,用于放image与js,css,html等

<?php
class IndexAction extends Action{
public function index(){
$array = array();
$array['name']  =  'thinkphp';
$array['email']  =  '123456@vip.qq.com;
$array['phone']  =  '123456';
$value =  'hello,ThinkPHP';
$this->assign('array',$array);
$this->assign('name',$value);
$this->display();
}
}
?>

在用到的地方—PUBLIC—/js/test.js这种形式。

(2) 将Myapp/Tpl/default/Index/index.html代码更改如下:

5:在项目目录tpl中,对于文件重用部分可以在default建立一个文件public,在需要用到的地方
如在public建立一个header.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>{$name}</title>
</head>
<body>
<iterate name="array" id="vo">
{$vo}<br />
</iterate>
</body>
</html>

然而在index.html需要用到,所以用<include file="public::header"/>

注意:name='array'是指要循环的模板变量是array,id='vo'是指这个数据在模板输出时所使用的名称

对于后台的框架同样是。

您可能感兴趣的文章:

  • Thinkphp模板中截取字符串函数简介
  • Thinkphp模板中使用自定义函数的方法
  • ThinkPHP模板之变量输出、自定义函数与判断语句用法
  • ThinkPHP模板自定义标签使用方法
  • ThinkPHP使用smarty模板引擎的方法
  • ThinkPHP模板比较标签用法详解
  • Thinkphp模板没有解析直接原样输出的解决方法
  • thinkphp模板继承实例简述
  • thinkPHP5.0框架安装教程
  • thinkPHP5.0框架命名空间详解
  • thinkPHP5.0框架模块设计详解
  • thinkPHP5框架渲染模板的3种方式简述

此外需要注意:在项目文件default目录下建立文件,对应的文件名为控制器模板的名字如:index

方法为在控制器里面调用的方法。


本文由必发88手机版发布,转载请注明来源:ThinkPHP写第二个模块应用,浅析ThinkPHP的沙盘输出