joolist / joolist-zf2-grid
该软件包已被废弃,不再维护。未建议替代软件包。
为ZF2提供的Joolist网格模块
dev-master
2013-12-24 10:18 UTC
Requires
- php: >=5.3.3
- ext-xml: *
This package is not auto-updated.
Last update: 2022-03-05 01:40:39 UTC
README
版本 0.0.1 由Nguyen Tien Minh和Joolist团队创建
简介
Joolist ZF2 Grid提供了一组在多个ZF2模块中使用的常用类。除非您正在安装依赖joolist-zf2-grid的任何网格的模块,否则您可能不需要安装此模块。
要求
- Zend Framework 2
- Bootstrap主题
安装
通过克隆项目
只需将此项目克隆到您的 ./vendor/
目录中,并在您的 ./config/application.config.php
文件中启用它。
使用composer
-
在您的 composer.json 中添加此项目
"require": { "joolist/joolist-zf2-grid": "dev-master" }
-
现在运行以下命令让composer下载joolist-zf2-grid:
$ php composer.phar update
如何使用
1. 为Zend Framework 2设置全局适配器
遵循:http://framework.zend.com/manual/2.1/en/tutorials/tutorial.dbadapter.html
2. 加载ServiceConfig
在您的模块的Module.php中加载Service Config,如下所示:
public function getServiceConfig() {
return array(
'factories' => array(
'Application\Model\Table\AlbumTable' => function($sm) {
$tableGateway = $sm->get('AlbumTableGateway');
$table = new AlbumTable($tableGateway);
return $table;
},
'AlbumTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new Album();
return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
},
),
);
}
3. 创建一个扩展BaseModel的Model
<?php
namespace Application\Model;
use JoolistGrid\Model\BaseModel;
class Album extends BaseModel {
}
4. 创建扩展BaseTable的Model Table
<?php
namespace Application\Model\Table;
use Zend\Db\TableGateway\TableGateway;
use JoolistGrid\Model\Table\BaseTable;
use Zend\Db\Sql\TableIdentifier;
use Zend\Db\Sql\Select;
class AlbumTable extends BaseTable {
protected $_name = 'album';
public function getSelectedGrid() {
$select = new Select();
$select->from('album')->join(array('cat' => 'categories'), 'cat.id = album.category_id',
array(
'cat_id' => 'id',
'cat_title' => 'title',
))
->columns(array(
'id' => 'id',
'title'=> 'title',
'artist' => 'artist',
));
return $select;
}
}
5. 创建一个如下的Grid
<?php
namespace Application\Grid;
use JoolistGrid\JoolistGrid;
use JoolistGrid\Grid\Collection\CollectionColumn;
use JoolistGrid\Grid\GridColumn;
use JoolistGrid\Grid\Column\Content\ColumnContentTemplate;
use JoolistGrid\Grid\Column\Content\ColumnContentCallBack;
class GridAlbum extends JoolistGrid {
public function init() {
$collectionColumn = new CollectionColumn();
$idColumn = new GridColumn('id');
$idColumn->setFilter('Combobox');
$idColumn->addAttribute(array('class' => 'center', 'width' => '4%'));
$catId = new GridColumn('cat_id');
$catId->setFilter('Combobox');
$catId->setLabel('Category Id');
$cat = new GridColumn('cat_title');
$cat->setFilter('Combobox');
$cat->setLabel('Category');
$titleColumn = new GridColumn('title');
$titleColumn->setFilter('Text');
$titleColumn->setLabel('Title');
$artistColumn = new GridColumn('artist');
$artistColumn->setFilter('Text');
$artistColumn->setLabel('Artist');
$linkDeleteColumn = new GridColumn();
$linkDeleteColumn->setLabel('Delete');
$linkDelete = '<a href="/admin/contact/delete/id/${id}" class="must-confirm"><i class="icon-remove"></i></a>';
$linkDeleteColumn->setContent(new ColumnContentTemplate($linkDelete));
$linkDeleteColumn->addAttribute(array('class' => 'center', 'width' => '4%'));
$collectionColumn->addColumns(
array(
$idColumn,
$catId,
$cat,
$titleColumn,
$artistColumn,
$linkDeleteColumn
));
$this->setCollectionColumn($collectionColumn);
}
}
6. 在您的控制器中
加载模型表、网格,如下所示:
public function indexAction() {
$sm = $this->getServiceLocator();
$albumTable = $sm->get('Application\Model\Table\AlbumTable');
$select = $albumTable->getSelectedGrid();
$grid = new GridAlbum('boat-grid', $this->getRequest(), $sm);
$selectGrid = $grid->getGridQuery($select);
$grid->setCaption('Bateaux');
$grid->setSource(new ZendDbSelect($this->_dbAdapter, $selectGrid));
$grid->setEnableCookie();
$grid->setView(new GridView());
$grid->deploy();
return new ViewModel( array('grid' => $grid));
}
7. 在您的视图中
渲染网格:<?php echo $grid->getView()->getHtml(); ?>