首先,在被里面的一个__SELF__的一个全局变量搞不明白了,我知道,这个是接收表单值的,但是他的接收方法我还是有些不明白,根据我的理解应该是这样:
在我们的控制器里面定义了一个我们自己的公共方法,那么对应的我们就应该在VIEW当我视图中建立方法名的html文件,这样数据模型-----控制器-----还有视图
就建立起了MVC模式的分层关系。但是,在视图的表单值集合具体怎么传到控制器的对应方法里面,我觉得应该是同样的的向所有的面向对象的方法一样,为了
让我们更加规范的书写代码,不得不高度的封装了一些系统方法,这里主要说的ThinkPHP的系统方法,所以,我们才能够非常简单的操作数据库,这里的取出
表单数据相对以往传统的方式那更是简单的不得了,这样做的好处我想应该是让我们把心思放在处理真正的业务逻辑上面去,下面是我在测试的过程里面记录的
代码:
控制器的对数据库的一般增加数据方法:
/*建立对应表的对象,使用方法,返回*/
/*$user=A("Home/User");
echo $user->num();
$test=A("Admin/Index");
$test->test();
echo "<br/>";*/
//建立数据库的对象,3.2版本要使用命名空间
//$goods=new \Model\emptestModel();
//$goods=D('emptest');
//xiami
// 在这里就是说,如果更换表,直接更换对象就可以了
//$goods=M('emp');
//下面是限制查询条件
//$info=$goods->where("salary > 300 and name like 'emp%' ")->select();
// $info=$goods->where("salary > 300")->select();
// $info=$goods->select('1,5,3');
// $info=$goods->find(5);
//$info=$goods->having("salary>30")->select();
//已经执行了一句select语句
// echo $goods->count().'<br/>';
// echo $goods->max('salary').'<br/>';
// foreach ($info as $key=>$value){
// echo $value['name'].'<br/>';
// }
//向数据表里面 添加数据
// $arr=array('name'=>'徐宁x1','garde'=>3,'email'=>'xuning@qq.com');
// $res=$goods->add($arr);
//$goods->name='徐宁-XCXC';
//$res=$goods->add();
//$res=$goods->delete(5);//但是这里返回的已经不是主键值了,而是被改变的行数多少
//delete也可以和where的条件同用,在最后添加delete方法
//如果传递任何参数,为了避免误删,所以就不执行任何操作
//如果是更新数据的话,实例化完成一个数据之后,分别给予后一次给予,最后就执行一个save方法,前面的很相似,save在最后执行
/*$data['name']="徐宁_CC";
$res=$goods->save($data);*/
//$res=$goods->where("id>2 and id<7")->delete();
//也可以通过AR的方式添加
/*最后add都是对象实例,添加的数据1:数组,2:逐条添加
* 返回的是主键的ID值*/
/*if($info){
echo "SUCCESSFUL";
}else{
echo "faul";
}
echo "被改变的主键值是:".$info.'<br/>';*/
//同样的也可以去切换数据库,运用db(),方法。
// echo "<table border='1px'>";
// foreach($info as $key => $value){
// echo "<tr>";
// echo "<td>";
// echo $key;
// echo "</td>";
// echo "<td>";
// echo $value;
// echo "</td>";
// echo "</tr>";
// }
// echo "</table>";
$this->assign('info',$info);
$this->display();
关于具体的视图就完全没有多少必要谢了,但是要非常注意的是我们在使用Smarty模板引擎的时候,要更换默认的think模板,因为Smarty我觉得是最好的模板,如线面的
数据路径:<link rel="stylesheet" type="text/css" href="{$smarty.const.CSS_URL}01.css">
系统的提交路径:<form action="{$smarty.const.__SELF__}" method="POST">
等等这些都是要用Smarty的方法的,但是我在试图里面想遍历的时候,发现报错,不知道这是什么原因,我绝得应该是
ThinkPHP版本的问题,所以,再测试之前还是要仔细读一下手册。
关于收集和添加数据的方式如下:
function add(){
$goods=D("emptest");
if(!empty($_POST)){
$goods->create();
$res=$goods->add();
if($res){
echo "添加成功";
}else{
echo "添加失败";
}
}else{
$this->display();
}
}
其中,create()方法是收集表单的数据,这个自然是__SELF__的作用结果。
然后收集完了我们就同样的使用add()方法进行添加。这里相对于传统方式具有一定的优势,不仅仅简化代码,而且,可以安全的处理数据。