ThinkPHP的输出和模型使用

1.假设在v层需要输出一个变量怎么办呢?即如同在html当中输出php代码。

可以直接使用{$name}代替。花括号被称之为标识符。可以通过修改配置项('TMPL_L_DELIM'=>'<(')进行修改L是左标识符,R是右标识符。

V层

<!DOCTYPE html>
<html>
<head>
    <title>title</title>
</head>
<body>
{$data}
</body>
</html>

在使用{$name}之前需要在控制器当中申明好这个的值。使用$this->assign去设置。第一个参数即为要调用的变量,第二个参数即为值。

<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
    public function index(){
        $name = "def";
        $this->assign('data',$name);
        $this->display();
    }
    public function admin(){
        echo "this is admin";
    }
}

所以输出的就是:def

2.要怎么跟数据库连接?

在配置项里(Conf/config.php)

  添加如下配置项

'DB_TYPE'=>'mysql', //设置数据库类型
'DB_HOST'=>'localhost',//设置主机
'DB_NAME'=>'thinkphp',//设置数据库名
'DB_USER'=>'root', //设置用户名
'DB_PWD'=>'', //设置密码
'DB_PORT'=>'3306', //设置端口号
'DB_PREFIX'=>'tp_', //设置表前缀
以上是一个方法也可以直接:
'DB_DSN'=>'mysql://root:@localhost:3306/thinkphp',//使用DSN方式配置数据库信息

 然后在控制器当中使用new Model('表明');进行使用

 1 <?php
 2 // 本类由系统自动生成,仅供测试用途
 3 class IndexAction extends Action {
 4     public function index(){
 5         $m = M('tp_user');
 6         $arr = $m->select();
 7         echo "<pre>";
 8         var_dump($arr);
 9         echo "</pre>";
10         $this->assign('data',$arr[0]['username']);
11         $this->display();
12     }
13     public function admin(){
14         echo "this is admin";
15     }
16 }

PS:在测试的时候不知道为什么连接的表明会将数据库名也给加上,也就是笨啦我实例化的表明是tp_user我的数据库是thinkphp,那么就会莫名其妙的变成thinkphp_tp_user。所以在创建数据库的时候要将库名带上。否则会一直没有数据。

3.假设输出的值是一个数组咋办?

就好比第二个问题里,已经将从数据库里获取到的值拿到了,这个时候是数组。那么我们直接通过$this->assign('data',$arr);直接输出以后需要在V层使用<volist>标签进行遍历数组。

格式:<volist name='标识符' id='idsss'>{$idsss.列1}------{$idsss.列2}</volist> #标识符就是那个变量,idsss就好比你又重新起个名字,通过idsss.列明就可以直接得到列的值了。

 

原文地址:https://www.cnblogs.com/nul1/p/9434452.html