CakePHP 查询组件
框架:CakePHP
功能:页面通过配置实现查询功能
代码:
src/Controller/Component/MySearchV2Component.php;
src/Template/Element/search_index_v2.ctp
src/Template/Element/date_time_picker.ctp
已提交到https://github.com/hanjing5024064/mycakephp3/commit/5308e88a55fe93ffea05942c7b22e51e2a705ee2
view中使用示例:
<?= $this->element('search_index_v2', [
'fields' => [
['type' => 'foreignString', 'column' => 'ProjectContractSubs-ProjectContractMains-code', 'label' => '框架协议编号'],
['type' => 'foreignString', 'column' => 'ProjectContractSubs-ProjectContractMains-name', 'label' => '框架协议名称'],
['type' => 'foreignString', 'column' => 'ProjectContractSubs-Projects-name', 'label' => '工程项目名称'],
['type' => 'br'],
['type' => 'foreignString', 'column' => 'EntityProjects-name', 'label' => '实体项目名称'],
['type' => 'foreignList', 'column' => 'EntityProjects-EntityProjectTypes', 'label' => '实体项目类型', 'option' => $entityProjectTypes],
['type' => 'foreignList', 'column' => 'EntityProjects-MaterialAreas', 'label' => '实体项目属地', 'option' => $materialAreas],
['type' => 'foreignDateRegion', 'column' => 'EntityProjects-project_date', 'label' => '实体项目立项日期'],
['type' => 'br'],
['type' => 'foreignString', 'column' => 'ProjectContractSubs-code', 'label' => '采购订单编号'],
['type' => 'foreignDateRegion', 'column' => 'ProjectContractSubs-signed', 'label' => '采购订单签订日期'],
['type' => 'isNotNull', 'column' => 'project_contract_sub_id', 'label' => '签订采购订单'],
['type' => 'isNull', 'column' => 'project_contract_sub_id', 'label' => '未签订采购订单'],
['type' => 'br'],
['type' => 'string', 'column' => 'name', 'label' => '单项工程名称'],
['type' => 'string', 'column' => 'code', 'label' => '单项工程编号'],
['type' => 'foreignList', 'column' => 'ProjectOverviews-ProjectNodes', 'label' => '当前节点', 'option' => $nodeArr],
],
'elementInEachRow' => 6,//每行显示查询项个数
'controller' => 'ProjectEngineerings',
'action' => 'index',
'excel' => [//导出excel的参数及方法
'controller' => 'ProjectEngineerings',
'action' => 'index',
'type' => 'outExcel'
]
]); ?>
option选项要自己在controller里设置,示例:
$entityProjectTypes = $this->EntityProjectTypes
->find('list', ['keyField' => 'id', 'valueField' => ['code', 'name']])
->order('EntityProjectTypes.code')
->toArray();
$nodeArr = $this->ProjectNodes->find()
->contain(['ProjectNodeTypes'])
->map(function ($row) {
$row->name = $row->project_node_type->name.'-'.$row->node_name;
return $row;
})
->combine('id', 'name')
->toArray();
效果: