如何在Symfony PHP中生成友好的URL?

时间:2008-08-29 14:58:59

标签: php url seo symfony1

我总是倾向于忘记这些内置的 Symfony 功能来制作链接。

4 个答案:

答案 0 :(得分:9)

如果您的目标是在整个应用程序中使用用户友好的URL,请使用以下方法:

1)在应用程序的routing.yml文件中为模块/操作创建路由规则。以下示例是一个操作的路由规则,该操作显示应用程序中的最新问题,默认为第1页(使用寻呼机):

recent_questions:
   url:    questions/recent/:page
   param:  { module: questions, action: recent, page: 1 }

2)设置路由规则后,使用模板中的url_for()帮助程序格式化外发URL。

<a href="<?php echo url_for('questions/recent?page=1') ?>">Recent Questions</a>

在此示例中,将构建以下URL:http://myapp/questions/recent/1.html

3)路由系统将分析传入的URL(请求),如果在路由规则配置中找到模式匹配,则命名的通配符(即URL的:/page部分)将变为请求参数。

您还可以使用link_to()帮助程序输出网址,而无需使用HTML <a>标记。

答案 1 :(得分:1)

此建议适用于symfony 1.0。它可能适用于更高版本。

在您的sfAction课程中

string genUrl($ parameters = array(),$ absolute = false)

例如。 $ this-&gt; getController() - &gt; genUrl('yourmodule / youraction?key = value&amp; key2 = value',true);

在模板中

这将生成正常链接。

string link_to($ name,$ internal_uri,$ options = array());

例如。 link_to('我的链接名称','yourmodule / youraction?key = value&amp; key2 = value');

答案 2 :(得分:0)

此外,如果您确实需要具有该URL的查询字符串,请使用:

link_to('My link name', 'yourmodule/youraction?key=value&key2=value',array('query_string'=>'page=2'));

否则,它会尝试将其作为网址的一部分进行路由,并可能会破坏您的操作。

答案 3 :(得分:0)

您可以直接生成网址,而无需先定义规则。

如果您想在动作中生成网址,可以使用 generateUrl()帮助:

$this->generateUrl('default', array('module'=>'[ModuleName]','action'=>'[ActionName]'))

如果您想在模板中生成网址,可以使用 url_for()帮助:

url_for('[ModuleName]/[ActionName]', $absolute)

将$ absolute设置为true / false,如果要显示,请不要忘记使用echo。

但是,如果你想建立一个链接(类似<a href=""></a>), link_to()帮助就可以了。