ZF2开发中常用操作

一.如何在Controller获取网址?

1        use Zend\View\Helper\ServerUrl;
2        $url = new ServerUrl();
3        var_dump($url->__invoke());
        
二.如何在Controller获取adapter?

1        $adapterOrSqlObject = $this->getServiceLocator ()->get ( 'Zend\Db\Adapter\Adapter' );

三.数据集如何转换为数组?

1        iterator_to_array($results)

四.如何在Controller获得路由参数?

1        $format = $this->getEvent()->getRouteMatch()->getParam('format');
2        $format = $this->params()->fromRoute('format');

五.如何在Controller获得GET和POST参数?

1        $request = $this->getRequest();
2        $request->getQuery('t');//get
3        $request->getPost('t');//post

六.如何获取上一次的插入ID?

1        $this->adapter->getDriver()->getConnection()->getLastGeneratedValue();

七.如何进行跳转?

1        $this->redirect ()->toRoute ( 'AdminHome/AdminController/AdminAction/AdminActionParam', array('controller' => 'seo', 'action' => 'index', 'format' => $resource->resource_id) );

八.如何调试SQL语句?

1        echo $sql->getSqlStringForSqlObject($select);
2        exit();

九.如何直接执行纯SQL语句?

1        $this->getAdapter()->query('UPDATE `'.$this->documentCountTable.'` SET `'.$action.'` = `'.$action.'` +1 WHERE `document_item_id` =?', array($documentItemId));

十.layout获得网站根目录

1        $this->basePath()

十一.模板中安全输出变量

1        $this->escapeHtml()

十二.模板中输出url

1        $this->url('authentication_admin_user', array('action' => 'delete', 'id' => $user->id));
2        $this->url('AdminHome/AdminController/AdminAction/AdminActionParam', array('controller' => 'seo', 'action' => 'index', 'format' => $resource->resource_id));

十三.模板中输出绝对url

1        echo $this->serverUrl().$this->basePath().'/';

十四.模板输出layout

01        $this->layout('admin/layout/layout');//方法1
02          
03         $layoutViewModel = $this->layout();
04         $layoutViewModel->setTemplate('layout/another');//方法2
05          
06         //bof
07         $headerView = new ViewModel();
08         $headerView->setTemplate('admin/index/header');//模板
09          
10         $sidebarView = new ViewModel();
11         $sidebarView->setTemplate('admin/index/sidebar');//模板
12          
13         $this->layout('admin/layout/layout');//layout
14         $this->layout()->addChild($headerView, 'header');
15         $this->layout()->addChild($sidebarView, 'sidebar');
16         return new ViewModel();
17         //eof
18          
19         $responseView = new ViewModel();
20        // $responseView->setTerminal(true);
21         
22         return $responseView;

十五.sql 复杂条件DEMO

1        use Zend\Db\Sql\Predicate\Predicate;
2         
3        $predicate = new Predicate();
4        $predicate->in('字段名', array('1', '2'));
5        $select->where(array($predicate));
01        public function fetchAll() {
02            $sql = new Sql ( $this->getServiceLocator ()->get ( 'Zend\Db\Adapter\Adapter' ));
03         
04            $whereArray = array ();
05            $whereArray ['r.is_seo'] = '1';
06         
07            $select = $sql->select ();
08            $select->from ( array('s'=>'zjs_seo') )->columns ( array (
09                    '为了避免冲突我新命名的字段' => '数据库里面的字段',
10            ) )->join ( array('r'=>'zjs_resource'), 's.resource_id = r.resource_id', array (
11                    'resource',
12            ), \Zend\Db\Sql\Select::JOIN_LEFT )->where ( $whereArray );
13            $request = $this->getRequest();
14            if ($request->isPost()) {
15                $predicate = new Predicate();
16                $predicate->like('r.resource', '%'.$request->getPost('filter_resource').'%');
17                $select->where(array($predicate));
18            }
19         
20            //echo $sql->getSqlStringForSqlObject($select);
21            $statement = $sql->prepareStatementForSqlObject($select);
22            $results = $statement->execute();
23         
24            return $results;
25        }

十六.tableGateway join DEMO

01        public function fetchAll() {
02            $sql = new Sql ( $this->tableGateway->getAdapter () );
03             
04            $whereArray = array ();
05            $whereArray ['zjs_resource.is_seo'] = '1';
06             
07            $select = $sql->select ();
08            $select->from ( 'zjs_seo' )->columns ( array (
09                    'seo_id',
10                    'seo_tilte',
11                    'seo_description'
12            ) )->join ( 'zjs_resource', 'zjs_seo.resource_id = zjs_resource.resource_id', array (
13                    'resource',
14                    'module'
15            ), \Zend\Db\Sql\Select::JOIN_LEFT )->where ( $whereArray );
16            $filter_resource = (isset ( $_POST ['filter_resource'] ) and ! empty ( $_POST ['filter_resource'] )) ? $_POST ['filter_resource'] : 0;
17            if ($filter_resource) {
18                $predicate = new Predicate();
19                $predicate->like('zjs_resource.resource', '%'.$filter_resource.'%');
20                $select->where(array($predicate));
21            }
22         
23            //echo $sql->getSqlStringForSqlObject($select);
24            $resultSet = $this->tableGateway->selectWith ( $select );
25             
26            return $resultSet;
27        }

十七.modules--连接数据库

01        <?php
02        $dbParams = array(
03            'database'  => 'dbname',
04            'username'  => 'root',
05            'password'  => '123456',
06            'hostname'  => '127.0.0.1',
07        );
08         
09        return array(
10            'service_manager' => array(
11                'factories' => array(
12                    'Zend\Db\Adapter\Adapter' => function ($sm) use ($dbParams) {
13                        return new Zend\Db\Adapter\Adapter(array(
14                            'driver'    => 'pdo',
15                            'dsn'       => 'mysql:dbname='.$dbParams['database'].';host='.$dbParams['hostname'],
16                            'database'  => $dbParams['database'],
17                            'username'  => $dbParams['username'],
18                            'password'  => $dbParams['password'],
19                            'hostname'  => $dbParams['hostname'],
20                        ));
21                    },
22                ),
23            ),
24        );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值