发新话题
打印

ThinkPHP常见问题

ThinkPHP常见问题

本章内容主要包括在使用ThinkPHP开发过程中的常见问题,在这里你或许还可以学到很多让你的开发工作事半功倍的小技巧。
目 录 1. 如何创建Dao对象 2. 如何创建Vo对象 3. 如何进行模块和操作跳转 4. 如何输出多重循环 5. 如何输出循环计数

TOP

8.1 如何创建Dao对象
通常创建Dao对象的方式是要使用import方法导入Dao类,然后再实例化Dao对象,下面的方式是最方便的创建Dao对象的方法。也是系统推荐的。
  • $dao =  D("User");


会自动导入当前项目的UserDao类,并返回对象的一个实例。
如果系统已经加载过UserDao类,也不会重复导入类文件。

TOP

8.2 如何创建Vo对象
下面是在创建Vo对象的过程中的一些使用建议。

1、根据表单提交的数据创建Vo对象
  • $dao = D("User");
  • $user = $dao->createVo();



2、实例化一个Vo对象的最快方法
  • $vo = V("User");
  • // 会自动导入当前项目的UserVo类,并返回UserVo类的一个实例。



3、根据关联数组创建Vo对象
  • $array = array('name'=>'test','nickname'=>'测试人员');
  • $vo = new UserVo($array);

TOP

8.3 如何进行模块和操作跳转
使用Action类的forward方法可以实现模块和操作的跳转
例如,
  • // 跳转到当前模块的test操作
  • $this->forward('test');
  • // 跳转到User模块的select操作
  • $this->forward('select','User');
  • // 延时3秒后跳转
  • $this->forward('success','Public',false,3);


以上代码应该在Action控制器类里面书写。

TOP

8.4 如何输出多重循环
通过ThinkTemplate模版引擎可以方便地输出多重循环,例如我们获取一个Volist对象,其中每个Vo对象又存在一个HAS_MANY的关联记录,那么我们可以这样输出这个二重循环。
  • <volist name="list" id="vo">
  • <sublist name="vo.comments" id="comment">
  • {$comment.content|ubb}
  • </sublist>
  • </volist>

TOP

8.5 如何输出循环计数
如果需要在volist或者iterate标签中输出循环计数值,可以使用下面的方法
  • <volist name="list" id="vo" key="k">
  • {$k} {$vo.name}
  • </volist>


key 属性可选,用于设置计数变量名,如果没有设置默认为i。
如果list变量是一个数组,那么可以用下面的方法输出键名
  • <volist name="list" id="vo">
  • {$key} {$vo.name}
  • </volist>


PS:需要注意不要和前面的方法混淆。
这里的key是数组的键名,如果不是索引数组,那么是从0开始计数,而之前的例子k是从1开始计数。
iterate标签的使用方法同上。

TOP

发新话题