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

时间:2020-03-05 18:44:58  来源:igfitidea点击:

我总是倾向于忘记这些内置的symfony函数来进行链接。

解决方案

回答

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

在sfAction类中:

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

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

在模板中:

这将生成一个正常链接。

字符串link_to($ name,$ internal_uri,$ options = array());

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

回答

如果目标是在整个应用程序中使用用户友好的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()帮助程序来输出URL,而无需使用HTML <a>标签。

回答

另外,如果我们实际上想要带有该url的查询字符串,请使用以下命令:

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

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