我有一个简单的博客包,其中包含以下路线:
blog_post:
pattern: /blog/{year}/{month}/{filename}/
defaults: { _controller: ProjectBlogBundle:Post:index }
requirements:
year: "[0-9]{4}"
month: "[0-9]{2}"
filename: "([^/.]+)"
Run Code Online (Sandbox Code Playgroud)
哪个匹配网址symfony.local/blog/2012/04/hello-world/没有问题.但是由于某种原因,我无法使用Request类访问查询参数,如下所示:
use Symfony\Component\HttpFoundation\Request;
class PostController extends Controller
{
/**
* @Template()
*/
public function indexAction(Request $request)
{
print_r($request->query->keys()); // outputs blank array
print_r($request->request->keys()); // outputs blank array
echo $request->get('filename'); // outputs hello-world
....
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么我无法访问查询参数使用$request->query->get('filename');?
先感谢您.
因为$request->query只包含作为查询字符串(GET仅参数)传递的参数,而不是那些定义为路由参数的参数(这些参数是从中解析的属性PATH_INFO)
所以,你可以使用两者,
$request->attributes->get('parameterName');
$request->get('parameterName');
Run Code Online (Sandbox Code Playgroud)
访问url参数.
实际上,在使用时$request->get('XXXX'),它会检查所有参数包($ request-> query,$ request-> request和$ request-> attributes),直到找到一个符合给定名称的包.
| 归档时间: |
|
| 查看次数: |
3484 次 |
| 最近记录: |