在路由定义的时候是否觉得定义路由很麻烦 尤其是重复的路由定义工作 大型项目的话路由就更多了在路由定义的时候是否觉得定义路由很麻烦 尤其是重复的路由定义工作 大型项目的话路由就更多了
index方法我们常用来获取列表数据
show方法我们常用来获取详情
create方法我们常用于获取新增数据
store方法我们常用于新增数据提交
update方法我们常用于更新提交
edit方法我们常用于获取编辑数据
destroy方法我们常用于删除数据
recovery 方法我们常用于软删除数据得恢复操作
当然还得预留其他方法得添加 这样我们在使用得时候就变得超级简单
下面得tasA和tapB就是自定义得any路由了
Route::resource('address',UserAddressController::class,['index','create','update','tapA','tapB']);
use Webman\Route as Router;
class Route extends Router
{
/**
* 资源型路由
* @param string $name
* @param string $controller
* @param array $options
*/
public static function resource(string $name, string $controller, array $options = [])
{
if(is_array($options) && !empty($options)){
foreach ($options as $action) {
switch ($action){
case 'index':
static::addRoute('GET', "/{$name}", [$controller,$action]);
break;
case 'create':
static::addRoute('GET', "/{$name}/create", [$controller,$action]);
break;
case 'store':
static::addRoute('POST', "/{$name}", [$controller,$action]);
break;
case 'update':
static::addRoute('PUT', "/{$name}/{id}", [$controller,$action]);
break;
case 'edit':
static::addRoute('GET', "/{$name}/{id}/edit", [$controller,$action]);
break;
case 'show':
static::addRoute('GET', "/{$name}/{id}", [$controller,$action]);
break;
case 'destroy':
static::addRoute('DELETE', "/{$name}/{id}", [$controller,$action]);
break;
case 'recovery': //还原删除操作
static::addRoute('PUT', "/{$name}/{id}/recovery", [$controller,$action]);
break;
default:
static::addRoute(['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'], "/{$name}/{$action}[/{id}]", [$controller,$action]);
break;
}
}
}else{
//为空时自动注册所有常用路由
static::addRoute('GET', "/{$name}", [$controller,'index']);
static::addRoute('GET', "/{$name}/create", [$controller,'create']);
static::addRoute('POST', "/{$name}", [$controller,'store']);
static::addRoute('PUT', "/{$name}/{id}", [$controller,'update']);
static::addRoute('GET', "/{$name}/{id}/edit", [$controller,'edit']);
static::addRoute('GET', "/{$name}/{id}", [$controller,'show']);
static::addRoute('DELETE', "/{$name}/{id}", [$controller,'destroy']);
static::addRoute('PUT', "/{$name}/{id}/recovery", [$controller,'recovery']);
}
}
}
如果官方能在webman-framework/src/Route.php中添加此方法 那就更好了
应该做成插件形式,插件加入到bootstrap,然后启动后,读取所有app下controller目录,然后 Route::rule()方法,批量注册 路由快捷,
tp5有但是tp6就去掉了
你说的这个自动路由老大已经写了插件了
这个可以有,严重关注!
发pr吧,然后记得帮忙写个文档。
https://github.com/webman-php/webman-manual