缺少一些必需参数(“id”)来生成路由Symfony2的URL

时间:2015-05-03 22:26:40

标签: symfony

我的security.yml

firewalls:
    user_area:
        pattern: ^/
        anonymous: ~
        provider: chain_provider
        form_login:
            login_path: login_action
            check_path: login_check
            csrf_provider: form.csrf_provider
            default_target_path: user_show_redirect
        logout:
            path: logout_action
            target: /login

我在登录后将用户重定向到他的个人资料,但我不知道如何创建控制器。现在,我的控制器看起来像

 /**
 * @Route("/user/show", name="user_show_redirect")
 * @return array
 */
public function redirectAction($id)
{
    return array('user' => $this->getUser());
}

我无法弄清楚如何做正确的事情并且容易。请回复

1 个答案:

答案 0 :(得分:1)

您的函数中未使用$id参数,您可以将其删除:

/**
 * @Route("/user/show", name="user_show_redirect")
 * @return array
 */
public function redirectAction()
{
    return array('user' => $this->getUser());
}

控制器需要返回一个Response,渲染一个Twig模板或使用@Template annotation

render()ing of a Twig template示例:

/**
 * @Route("/user/show", name="user_show_redirect")
 * @return array
 */
public function redirectAction()
{
    return $this->render(
        'AcmeWebsiteBundle:Default:profile.html.twig',
        array('user' => $this->getUser())
    );
}

您必须在 src / Acme / WebsiteBundle / Resources / views / Default / profile.html.twig 中创建一个文件,其中包含以下内容:

{{ user.firstName }}

这意味着您的User实体有一个getFirstName()方法,它会显示该用户的名字。

请参阅Symfony2 official documentation了解模板继承等内容。