• Zend Framework使用Extjs进行数据库交互和分页


    一、大概思路

    1.1、

    (备注:具体配置和运行情况参考上篇Ubuntu10.10 Zend FrameWork配置及helloworld显示)

    二、数据库

    CREATEDATABASEIFNOTEXISTS `text`;
    USE `text`;

    --
    --
    Definition of table `text`.`user`
    --

    DROPTABLEIFEXISTS `text`.`user`;
    CREATETABLE `text`.`user` (
    `useId`
    int(11) NOTNULL AUTO_INCREMENT,
    `useAccount`
    varchar(50) DEFAULTNULL,
    `useName`
    varchar(20) DEFAULTNULL,
    `useSex`
    varchar(5) DEFAULTNULL,
    `useAddress`
    varchar(50) DEFAULTNULL,
    `useTime`
    timestampNOTNULLDEFAULTCURRENT_TIMESTAMP,
    PRIMARYKEY (`useId`)
    ) ENGINE
    =MyISAM AUTO_INCREMENT=10DEFAULT CHARSET=utf8;

    --
    --
    Dumping data for table `text`.`user`
    --

    /*!40000 ALTER TABLE `user` DISABLE KEYS */;
    LOCK TABLES `
    user` WRITE;
    INSERTINTO `text`.`user` VALUES (3,'rubymatlab','zhouyongfeng','boy','guangdong','2011-04-06 11:05:55'),
    (
    4,'xiaohong','xiaohong','girl','henan','2011-04-06 11:05:55'),
    (
    5,'zhanglao','zhanglao','boy','sichuan','2011-04-02 11:05:55'),
    (
    6,'liuxia','liuxia','girl','beijing','2011-04-02 11:05:55'),
    (
    7,'chenming','chenming','boy','xinjiang','2011-04-02 11:05:55'),
    (
    9,'xiaodong','xiaodong','boy','yunnan','2011-04-02 11:05:55');

    三、创建项目ZFExtjs

    四、模型Model

    4.1、设置数据库连接Bootstrap.php

    <?php

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    protectedfunction _initDBConnection ()
    {
    //数据库连接
    $params=array('host'=>'localhost','username'=>'root',
    'password'=>'123','dbname'=>'text','charset'=>'utf8');
    $db= Zend_Db::factory('PDO_MYSQL',$params);
    Zend_Db_Table
    ::setDefaultAdapter($db);
    Zend_Registry
    ::set('db',$db);
    }
    }

    4.2、为数据库创建可操作的Model层(即输入zf create db-table User user,然后增加自定义函数方法)

    <?php

    class Application_Model_DbTable_User extends Zend_Db_Table_Abstract
    {

    protected$_name='user';
    publicfunction getAllUser ($sql)
    {
    $adapter= Zend_Registry::get('db');
    $result=$adapter->query($sql);
    return$result;
    }
    publicfunction getCount($sql)
    {
    $adapter=Zend_Registry::get('db');
    $result=$adapter->fetchOne($sql);
    return$result;
    }

    }

    五、控制器Controller

    5.1、编写一个showallAction函数方法

    <?php
    class IndexController extends Zend_Controller_Action
    {
    publicfunction init ()
    {
    /* Initialize action controller here */
    }
    publicfunction indexAction ()
    {
    // action body
    $this->view->content ="Hello World,Welcome to Zend Framework do Well in Extjs";
    $this->render();
    }
    publicfunction showallAction ()
    {
    $this->_helper->contextSwitch()->initJsonContext();
    $this->getResponse()->setHeader('Content-Type','application/json');
    $db=new Application_Model_DbTable_User();
    //分页取数据
    $start=$this->_request->getPost("start");
    $limit=$this->_request->getPost("limit");
    $sql="select * from user limit ".$start.",".$limit;
    $result=$db->getAllUser($sql);
    $select=$result->fetchAll();
    $sql="select count(useid) as useid from user";
    $count=$db->getCount($sql);
    echo"{\"totalCount\":".$count.",\"data\":".
    Zend_Json
    ::encode($select) ."}";
    }
    }

    六、视图View

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>使用Zend Framework实现ExtjsGrid的交互</title>

    <link href="ext-3.2.0/resources/css/ext-all.css" rel="stylesheet"
    type
    ="text/css"/>
    <script src="ext-3.2.0/adapter/ext/ext-base.js" type="text/javascript"></script>
    <script src="ext-3.2.0/ext-all.js" type="text/javascript"></script>
    <script>
    Ext.onReady(
    function() {
    Ext.QuickTips.init();
    var _start =0;
    var _limit =5;
    var store =new Ext.data.JsonStore({
    root:
    'data',
    totalProperty:
    'totalCount',
    url:
    'Index/showall',
    fields: [
    { name:
    'useAccount', type: 'string' },
    { name:
    'useName',type:'string' },
    { name:
    'useSex' ,type:'string'},
    { name:
    'useAddress',type:'string' },
    { name:
    'useTime'}
    ]
    });
    var grid =new Ext.grid.GridPanel({
    frame:
    true,
    title:
    '学生各科成绩表',
    stripeRows:
    true, //斑马线
    store: store,
    applyTo:
    'app_grid',
    trackMouseOver:
    true,
    height:
    300,
    800,
    loadMask: { msg:
    '正在加载数据,请稍侯……' },
    viewConfig: {
    forceFit:
    true
    },
    columns: [
    new Ext.grid.RowNumberer(), //行号
    new Ext.grid.CheckboxSelectionModel({ singleSelect: true }),
    { header:
    '<font size=2>用户帐户</font>', dataIndex: 'useAccount', sortable: true },
    { header:
    '<font size=2>用户姓名</font>', dataIndex: 'useName', sortable: true },
    { header:
    '<font size=2>用户性别</font>', dataIndex: 'useSex', sortable: true },
    { header:
    '<font size=2>用户地址</font>', dataIndex: 'useAddress', sortable: true },
    { header:
    '<font size=2>注册时间</font>', dataIndex: 'useTime', sortable: true }
    ],
    bbar:
    new Ext.PagingToolbar({//分页
    pageSize: _limit,
    store: store,
    displayInfo:
    true, //非要为true,不然不会显示下面的分页按钮
    displayMsg: '<font size=2>第 {0} 条到 {1} 条,一共 {2} 条记录</font>',
    emptyMsg:
    "没有记录"
    })
    });
    store.load({ params: { start: _start, limit: _limit} });
    })
    </script>

    </head>

    <body>
    <div id="app_grid"></div>
    <img src="images/door_open.png"></img>
    <?=$this->content;?>
    </body>

    </html>

    七、运行效果

    八、总结

    Zend Framework和Extjs结合方面还不算太难,不过要掌握好可能需要些时间。

    九、相关资源

    源代码下载:https://files.cnblogs.com/yongfeng/ZFExtjs.zip(Extjs方面采用版本3.2.0的,并不包含在文件夹内,需要大家手动添加)

  • 相关阅读:
    【K8S】Kubernetes: --image-pull-policy always does not work
    【Maven插件】exec-maven-plugin
    【分布式事务】微服务架构下的分布式事务问题
    【Jenkins】新版本的特性:自定义流水线
    【Kibana】自定义contextPath
    【Zuul】Zuul过滤器参考资料
    【Spring】Springboot监听器,启动之后初始化工作
    【Spring】bean动态注册到spring
    【Java-JPA】让Springboot启动不检查JPA的数据源配置
    linux-批量杀死进程
  • 原文地址:https://www.cnblogs.com/yongfeng/p/2032358.html
Copyright © 2020-2023  润新知