2.5Symfony路由(Routing)之生成URL

在控制器生成URL

//无路由参数
$this->generateUrl('sign_up');

//有路由参数
$userProfilePage = $this->generateUrl('user_profile', [
    'username' => $user->getUserIdentifier(),
]);

//本地化参数
$signUpPageInDutch = $this->generateUrl('sign_up', ['_locale' => 'nl']);

//未定义参数
//如果您向该generateUrl()方法传递一些不属于路由定义的参数,它们将作为查询字符串包含在生成的 URL 中
// the 'blog' route only defines the 'page' parameter; the generated URL is:
// /blog/2?category=Symfony
$this->generateUrl('blog', ['page' => 2, 'category' => 'Symfony']);

//额外参数
//当对象被用于placeholder时,对象会被转换成字符串,但是当对象被用于额外参数时,对象不会被转换为字符串,因此需要显性转换为字符串。
$this->generateUrl('blog', ['uuid' => (string) $entity->getUuid()]);

在服务中生成URL

//无路由参数
$this->router->generate('sign_up');
//有路由参数
$this->router->generate('user_profile', [
            'username' => $user->getUserIdentifier(),
        ]);
//本地化参数
$this->router->generate('sign_up', ['_locale' => 'nl']);

在模板中生成URL

path()用于给命名路由生成相对URL。

path('blog_post', {slug: post.slug});
path('blog_show', {slug: 'slug-value'});

url()用于给命名路由生成绝对URL。

url('blog_post', {slug: post.slug});
url('blog_show', {slug: 'slug-value'});

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/symfony/6699.html

发表评论

登录后才能评论