locustv2 / yii2-encode-url-rule
在创建URL时使查询参数的编码更简单。
1.0.0
2017-03-31 16:58 UTC
Requires
- yiisoft/yii2: ~2.0.4
This package is not auto-updated.
Last update: 2024-09-15 01:30:19 UTC
README
此扩展允许创建包含数组数据的参数URL。这是通过将数组扁平化为JSON字符串,然后编码并作为查询字符串添加来实现的。
安装
安装此库的首选方式是通过 composer。
运行以下命令:
php composer.phar require --prefer-dist locustv2/yii2-encode-url-rule
或者
{
"require": {
"locustv2/yii2-encode-url-rule": "~1.0.0"
}
}
将其添加到您的 composer.json 文件中。
配置 EncodeUrlRule
要使用 EncodeUrlRule,将其添加到您的配置中。
'UrlManager' => [ 'ruleConfig' => [ 'class' => 'weblement\components\EncodeUrlRule, 'paramName' => 'enc', 'autoEncodeParams' => [ 'page', 'userId' ], ], ],
使用 EncodeUrlRule
在yii中创建URL时,您可以将数组或参数传递给您设置的 EncodeUrlRule::$paramName 键。所有在 EncodeUrlRule::$autoEncodeParams 中的参数也将被编码并分配到您的URL中的键。例如
// /site/url-test/?id=123&key1=value1&enc=a2V5Mj0lMjJ2YWx1ZTIlMjImdXNlcklkPTQ1NiZwYWdlPTI%253D echo Url::to([ '/site/url-test', 'id' => 123, 'key1' => 'value1', 'userId' => 456, 'page' => 2, 'enc' => [ 'key2' => 'value2' ], ]);
在您的控制器操作中,您可以按以下方式获取查询参数
public function actionUrlTest($id, $userId, $key2) { var_dump($id); // 123 var_dump($userId); // 456 var_dump($key2); // value2 var_dump(Yii::$app->request->get('key1')); // value1 var_dump(Yii::$app->request->get('page')); // 2 var_dump(Yii::$app->request->get()); // contains all get query parameters including `enc` }
更多示例
您还可以按以下方式传递数组
Url::to([ '/site/url-test', 'enc' => [ 'user' => [ 'id' => $user->id, 'name' => $user->name, ] ], ]); Url::to([ '/site/url-test', 'enc' => [ 'user' => User::find()->asArray()->one(), ], ]);
然而,如果尝试分配控制器操作参数,这些参数将不起作用。
// will not work public function actionUrlTest($user) { var_dump($user); } // will work public function actionUrlTest() { var_dump(Yii::$app->request->get('user')); }
待办事项
- 添加单元测试
贡献
请随时发送拉取请求。
许可证
有关许可证信息,请查看 LICENSE 文件。