Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
876 views
in Technique[技术] by (71.8m points)

php - How Generating URLs from a template correctly in Symfony2/Twig

I'm working with Symfony2 and:

I have this in the routing.yml

_welcome:
    resource: "@AcmeBundle/Controller/"
    type:     annotation

I this method within a controller:

/**
 * @Route("/{page}")
 */
public function staticAction($page)
{
    return $this->render('AcmeBundle:Static:'.$page.'.html.twig');
}

To generate common pages:

/home
/contact 
/privacy

But when I make the url on the menu:

<a href="{{ path('_welcome', {'page': 'home'}) }}">Home</a>
<a href="{{ path('_welcome', {'page': 'contact'}) }}">Contact</a>
<a href="{{ path('_welcome', {'page': 'privacy'}) }}">Privacy</a>

And I Symfony generates these urls:

…./?page=home
…./?page=contact
…./?page=privacy

And the right would be:

/home
/contact
/privacy

What must I do?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You've to add a route name in your controller route annotations as follow,

/**
 * @Route("/{page}", name="static")
 */
public function staticAction($page)
{
    // ... 
}

You could then call the twig path helper using that name,

<a href="{{ path('static', {'page': 'home'}) }}">Home</a>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...