Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Symfony PHP中生成友好的URL?_Php_Url_Seo_Symfony1 - Fatal编程技术网

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

如何在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

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

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

在您的sfAction类中

字符串genUrl($parameters=array(),$absolute=false)

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

在模板中

这将生成一个正常链接

字符串链接到($name,$internal,$options=array())

例如。
链接到('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部分构造,除非应用程序配置为这样做(默认情况下不是这样)。