如何在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的一部分进行路由,并有可能破坏操作。