Yii规则urlManager

时间:2017-12-14 10:37:49

标签: yii rules

我的网址规则如下:

positionIds

我想在Array变量中获得positionIds。 那么可以在Array中发送'product-<typeproduct:.{1,255}>-prd-<positionIds:array[\d\-]+>.html' => 'site/products/bycate', 如下所示吗? :

plotscan(A, B)

1 个答案:

答案 0 :(得分:0)

据我所知,你想把它作为数组,所以url会是这样的:

'/product-2-prd-222,223,224.html'

222,223,224是要在数组中获取的positionId。 据我所知,如果不创建看起来像这样的urlRule类,就无法做到这一点:

class ProductsUrlRule extends UrlRule
{

  public function parseRequest($manager, $request)
  {
     if (preg_match("/product-([0-9]+)-prd-([0-9,]+).html/",$request,$vars)===3) {

           $typeProduct = $var[1];
           $productIds = explode(',',$var[2]);

           return [
               'controller/action', 
               'typeproduct'=> $typeProduct, 
               'positionIds'=>$productIds
           ];
     }
  }
}

这将解析我在上面向您展示的示例网址:

'?r=controller/action&typeproduct=2&positionIds[]=222&positionIds[]=223&positionIds[]=224'

当然,您需要将controller/action替换为您的控制器/操作对,然后再验证字段。