灰太狼 2019-04-30 17:17:23 2010次浏览 0条回复 0 0 0

今天在群里看到有个人问这个问题。

通过 $app->getUrlManager()->addRules([...]); 配置路由

你们都知道是什么了。

问题:如果想在每项路由规则的 extraPatterns 都加上 OPTIONS,又不想一个个去写,怎么能自动加上?

解决:

在 $app->getUrlManager()->addRules([...]);后面写 
$this->extendMethod();//调用下面的方法
//该方法写的还不完善,大概意思就是这样!
private function extendMethod()
{
    $extendMethod = ',OPTIONS';//如果还要加其他的继续加 ',OPTIONS,GET,PUT'
    foreach($app->getUrlManager()->rules as $key => $val){
        if(is_array($val->extraPatterns) && count($val->extraPatterns) > 0){
            $extendMethodArray = [];
            $controller = implode('',$val->controller);
            foreach ($val->extraPatterns as $k=>$v){
                $method = explode(' ',$k,2);
                $method[0] =  $method[0] . $extendMethod;
                $extendMethodArray[$controller][$method[0].' '.$method[1]] = $v;
            }
            $val->extraPatterns = array_values($extendMethodArray)[0];
         }
   }
}
    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册