如何在Symfony PHP中生成友好的URL?
我总是倾向于忘记这些内置的Symfony链接功能。此建议适用于Symfony 1.0。它可能适用于更高版本 在您的sfAction类中: 字符串genUrl($parameters=array(),$absolute=false) 例如。 $this->getController()->genUrl('yourmodule/youraction?key=value&key2=value',true) 在模板中: 这将生成一个正常链接 字符串链接到($name,$internal,$options=array()) 例如。如何在Symfony PHP中生成友好的URL?,php,url,seo,symfony1,Php,Url,Seo,Symfony1,我总是倾向于忘记这些内置的Symfony链接功能。此建议适用于Symfony 1.0。它可能适用于更高版本 在您的sfAction类中: 字符串genUrl($parameters=array(),$absolute=false) 例如。 $this->getController()->genUrl('yourmodule/youraction?key=value&key2=value',true) 在模板中: 这将生成一个正常链接 字符串链接到($name,$internal,$options
链接到('My link name','yourmodule/youraction?key=value&key2=value') 如果您的目标是在整个应用程序中使用用户友好的URL,请使用以下方法: 1) 在应用程序的routing.yml文件中为模块/操作创建路由规则。以下示例是显示应用程序中最新问题的操作的路由规则,默认为第1页(使用寻呼机): 2) 设置路由规则后,使用模板中的
url\u 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()
帮助程序输出URL,而无需使用HTML
标记。此外,如果您确实需要带有该URL的查询字符串,请使用以下方法:
link_to('My link name', 'yourmodule/youraction?key=value&key2=value',array('query_string'=>'page=2'));
否则,它将尝试将其作为url的一部分进行路由,可能会破坏您的操作。您可以直接生成url,而无需先定义规则 如果要在操作中生成URL,可以使用generateUrl()helper:
$this->generateUrl('default', array('module'=>'[ModuleName]','action'=>'[ActionName]'))
url_for('[ModuleName]/[ActionName]', $absolute)
如果要在模板中生成URL,可以使用URL\u for()helper:
$this->generateUrl('default', array('module'=>'[ModuleName]','action'=>'[ActionName]'))
url_for('[ModuleName]/[ActionName]', $absolute)
将$absolute设置为true/false,如果要显示,请不要忘记使用echo
但是如果您想创建一个链接(类似于
),link_to()helper就可以了。只是一个nit,但是URL不会使用.html部分构造,除非应用程序配置为这样做(默认情况下不是这样)。