我的网址规则如下:
positionIds
我想在Array变量中获得positionIds
。
那么可以在Array中发送'product-<typeproduct:.{1,255}>-prd-<positionIds:array[\d\-]+>.html' => 'site/products/bycate',
如下所示吗? :
plotscan(A, B)
答案 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
替换为您的控制器/操作对,然后再验证字段。