Arrays Yii2:如何将数组作为参数传递给控制器操作?
使用URLArrays Yii2:如何将数组作为参数传递给控制器操作?,arrays,url,parameters,controller,yii2,Arrays,Url,Parameters,Controller,Yii2,使用URLhttp://localhost/site/myAction?a[]=value1&a[]=value2我正在尝试将数组传递给操作。控制器操作如下所示: class SiteController extends Controller { public function actionMyAction($a) { ... } } 我得到一个错误: 异常“yii\base\InvalidParamException”和消息“Variable” 声明无效。”
http://localhost/site/myAction?a[]=value1&a[]=value2
我正在尝试将数组传递给操作。控制器操作如下所示:
class SiteController extends Controller {
public function actionMyAction($a) {
...
}
}
我得到一个错误:
异常“yii\base\InvalidParamException”和消息“Variable”
声明无效。”
实际上,我希望能够将字符串或字符串数组传递给操作。单个字符串可以正常工作,但数组不行。如何解决这个问题?传递一个字符串和一个具有相同声明参数的数组是不可能的。要传递数组,必须按以下方式声明参数:
class SiteController extends Controller {
public function actionMyAction(array $a) { // parameter must be an array now
...
}
}
这样,URL中的单个参数需要包装到URL中的数组中
另一种方法是完全不声明任何参数,并使用以下命令获取值:
现在这些URL是有效的:
http://localhost/site/myAction?a[]=value1&a[]=value2
http://localhost/site/myAction?a[]=值1
http://localhost/site/myAction?a=value1
http://localhost/site/myAction
使用json编码数据,您可以传递多个值。您的意思是使用$.ajax()
?问题是关于控制器操作的-如果它接受数组。而不是如何发送数据。
class SiteController extends Controller {
public function actionMyAction() { // no parameter anymore
$a = Yii::$app->request->get('a'); // $a can be an array or a string!
// or null if no argument was passed.
}
}
compareList=[{"model":"shine"},{"model":"yamaha-alba"}]