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.列明就可以直接得到列的值了。