Symfony 2:无法从查询字符串获取响应(基本示例)


Symfony 2: can't get response from query strings (basic example)

我正在尝试遵循Symfony Book并从插入的URL中获取值。在我的控制器中,我有:

namespace Developer'MarkBundle'Controller;
use Symfony'Component'HttpFoundation'Response;
use Symfony'Component'HttpFoundation'Request;
use Symfony'Bundle'FrameworkBundle'Controller'Controller;
class SimplestController extends Controller
{
public function simpleAction()
{
    return new Response('Simple Response');
}
public function getMeAction(Request $request, $page)
{
    $to_get = $request->query->get('page');
    var_dump($to_get);
    return new Response('gotcha!');
}
}

在路由配置中:

get_me:
    path:     /get_me/{page}/{title}
    defaults: {_controller: DeveloperMarkBundle:Simplest:getMe }

当我在浏览器中编写/get_me/somepage/sometitle 时,我应该得到 $page 变量的值"somepage"。但var_dump显示 NULL。我不知道为什么。

不需要从查询字符串参数中获取这些参数,可以直接从路由中获取这些参数。由于您的路由被定义为/get_me/{page}/{title}只需确保您的操作将它们作为参数......

public function getMeAction(Request $request, $page, $title)
{
    return new Response("page is $page and title is $title");
}

有关更多详细信息,请参阅有关使用占位符进行路由的手册部分

另外,请注意,如果您不使用 Request 对象,则可以从方法参数中省略它,使其看起来更简单......

public function getMeAction($page, $title)
{
    return new Response("page is $page and title is $title");
}
public function getMeAction(Request $request, $page, $title)
{
    var_dump($page); // returns somepage
    return new Response('gotcha!');
}