php-crud-api改造记
php-crud-api改造记
php-crud-api地址
这个是小组组长要求使用到的一个开源的php的库。目地是,减少php代码,使精力专注在前端页面上。但是在使用过程中,发现并不能很好的与前端的Extjs框架配合好。为了解决这个问题,便要对其进行适当的改进。
改造如下
前端提交表单,需要返回success字段
前端需求数据跟后端的api接口返回数据格式不一致,前端需要提交数据成功后,需要增加一个success=true字段,而原有的api框架,只返回成功后的api。需要需要对其进行改造。
改造得比较丑,代码可以优化。另外,这种需求是简单的处理。结合之前看到的其他的框架,可以用事件插件模式来处理。(参见typecho的设计模式),RecordController.php,create、update方法。
话不多说,代码前后对比:
改造前:
$params = $request->getParams();
if (is_array($record)) {
$result = array();
foreach ($record as $r) {
$result[] = $this->service->create($table, $r, $params);
}
return $this->responder->success($result);
} else {
return $this->responder->success($this->service->create($table, $record, $params));
}
改造后:
$params = $request->getParams();
$needSuccess=false;
if(isset($params['success'])){
$needSuccess=true;
}
if (is_array($record)) {
$result = array();
foreach ($record as $r) {
$result[] = $this->service->create($table, $r, $params);
}
if($needSuccess){
return $this->responder->success(array('success'=>true,'result'=>$result));
}else{
return $this->responder->success($result);
}
} else {
if($needSuccess){
$result=$this->service->create($table, $record, $params);
return $this->responder->success(array('success'=>true,'result'=>$result));
}else{
return $this->responder->success($this->service->create($table, $record, $params));
}
}