zoukankan      html  css  js  c++  java
  • TinkPHP框架学习-02控制器基本操作

                         1-----创建控制器

                         2-----访问视图页面

                      3-----注册变量到视图页面

                      4-----获取表单数据

    一 在Home模块下创建控制器

        举例:  目录tp/Application/Home/Controller下创建TestController.class.php

             访问该控制器 localhost/i/tp/Home/Test/操作方法

        

    <?php
    namespace HomeController;
    use ThinkController;
    class TestController extends Controller {
        
        public function test(){
            echo "hello!";
        }
         //访问该方法hello   
       //http://localhost/i/tp/index.php/Home/Test/test
    }

          博客出自"万年",地址:http://www.cnblogs.com/wannian/p/8998424.html

    二  访问方法显示视图页面

        --在Home模块下的View文件夹中

        --新建文件夹与控制器名一样,在此文件夹下建立视图页面

        例如:

          --如果Home/Controller文件夹下有TestController.class.php控制器,并且该控制器有ceshi方法,既Test控制器下TestController类里的ceshi()方法

          --ceshi方法中有  $this->show();  访问该控制器对应的视图文件夹下该方法对应的视图页面

          --那么Home/View文件夹下创建Test文件夹,并创建视图页面ceshi.html

          --访问该页面的方法为: localhost/i/tp/index.php/Home/Test/ceshi Home模块下Test( TestController.class,php )控制器的TestController类下的ceshi()方法

    <?php
    namespace HomeController;
    use ThinkController;
    class TestController extends Controller {
        public function ceshi(){
            $this->show();
        }
    }

    三  注册变量到视图页面

        ①-- 在TP框架中的方法 :

            --    控制器的方法里注册变量   $this->assign(" 变量名称 "," 变量的值 ");   

                    如:  $this->assign('uname','张三');

            --   视图页面访问的方法  {$变量名称}  大括号里面写$符号与变量名称,不能有空格换行等 

                    如:  {$uname}   

        ②-- 如果注册的变量是数组,  获取方法: {$arr['0']} 或 {$arr['id']}

        ③--循环输出

            --<foreach>标签,TP特有的循环输出

            --name的值是变量名称( 与方法中的变量名保持一致 ),item的值是获取到的数组的值( 自定义命名 )

            --注册一个数组

        public function test(){
            $arr=array(
              array("code"=>"n001","name"=>"汉族"),
              array("code"=>"n002","name"=>"天族")
            );
            $this->assign("nation",$arr);
            $this->show();
    
        }

            -- 前端获取

     <select>
           <foreach name="nation" item="v">
                <option value='{$v.code}'>{$v.name}</option>
           </foreach>
     </select>

         ④--if判断

            --<if>标签else标签,TP特有的前端判断

            --<if>标签中condition属性的值是判断条件,

                --判断条件中变量名称需有$符前缀,    例如一个注册变量名称是id,值是0, 那么判断id是应 condition=" $id==0 "

                  例如在test方法中注册变量   $this->assign("dc",0);

                  前端页面判断并输出,因为dc不等于1所以页面显示李四

            <if condition="$dc==1">
                  <b>张三</b>
              <else />
                  <i>李四</i>
            </if>

         ⑤-- <literal>标签照原样显示,<if>标签<foreach>标签写在该标签内不在执行判断与循环

    四  获取表单数据     

        ①-- 通过get_defined_constants(true); 方法获取方法的路径,返回一个二维关联数组

            --路径在'user'中 因此  var_dump(get_defined_constants(true)['user']);

            --  __ROOT__   TP框架的根路径

            --  __SELF__  自身方法的路径

            --  __APP__  入口目录

            --  __MODULE__  当前模块路径

            --  __CONTROLLER__  到控制器的目录

            --  __ACTION__  到操作方法的目录

        ②-- 前端创建视图页面sub.html  并写入form表单,提交地址为到此页面的操作方法目录__ACTION__

    <form action="__ACTION__" method="post">
        <input type="text" name="uid">
        <input type="password" name="pwd">
        <input type="submit" value="登录">
    </form>

        ③--  在Test控制器中些sub方法获取数据

        public function sub(){
    
            if(empty($_POST)){
                $this->show();
                //如果POST是空的继续显示提交页面
            }else{
                echo $_POST['uid'];
                //如果有POST则对其操作,或输出或存入数据库等等
            }
            var_dump(get_defined_constants(true)['user']);
        }
  • 相关阅读:
    你真的理解clear:both吗?
    动态修改DataSet的列名,GridView动态绑定列
    word2007 添加批注后怎样让文档内容不向左移动 保持不变
    【转载】哪个OA比较好,18家常见OA系统全方位大阅兵
    短线选股的四大核心要素
    ASPX页面的缓存OutputCache
    OA产品的边际竞争者
    老股民经验之谈 这些股票买入必死无疑
    Word 2007批注及批注者姓名修改技巧
    ASP.NET中httpmodules与httphandlers全解析
  • 原文地址:https://www.cnblogs.com/wannian/p/8998424.html
Copyright © 2011-2022 走看看