使用网址http://localhost/site/myAction?a[]=value1&a[]=value2
我尝试将数组传递给某个操作。控制器操作如下所示:
class SiteController extends Controller {
public function actionMyAction($a) {
...
}
}
我收到错误:
例外' yii \ base \ InvalidParamException'带有消息'变量 声明无效。'
实际上,我希望能够将字符串或字符串数组传递给操作。单个字符串工作正常但不是数组。我该如何解决?
答案 0 :(得分:3)
传递一个字符串和一个具有相同声明参数的数组是不可能的。要传递数组,必须以这种方式声明参数:
class SiteController extends Controller {
public function actionMyAction(array $a) { // parameter must be an array now
...
}
}
使用此功能,URL中的单个参数需要包装到URL中的数组中。
另一种方法是根本不声明参数并使用Yii::$app->request->get()
获取值:
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.
}
}
现在这些网址有效:
http://localhost/site/myAction?a[]=value1&a[]=value2
http://localhost/site/myAction?a[]=value1
http://localhost/site/myAction?a=value1
http://localhost/site/myAction
答案 1 :(得分:1)
compareList=[{"model":"shine"},{"model":"yamaha-alba"}]
使用json编码数据可以传递多个值。