代码之家  ›  专栏  ›  技术社区  ›  andyuk

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

  •  6
  • andyuk  · 技术社区  · 17 年前

    我总是倾向于忘记这些内在的东西 用于制作链接的函数。

    4 回复  |  直到 7 年前
        1
  •  9
  •   jamz    17 年前

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

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

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

    2) 设置路由规则后,使用 url_for()

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

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

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

    link_to() 帮助器输出URL而不使用HTML <a> 标签

        2
  •  1
  •   andyuk    17 年前

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

    在你的行动课上 :

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

    在模板中 :

    这将生成一个正常链接。

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

    如。 链接到('My link name'、'yourmodule/youraction?key=value&key2=value');

        3
  •  0
  •   thrashr888    17 年前

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

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

        4
  •  0
  •   priyabagus    14 年前

    如果要在操作中生成URL,可以使用 generateUrl() 帮手:

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

    如果要在模板中生成URL,可以使用 帮手:

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

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

    但是如果你想做一个 链接 (差不多 <a href=""></a> ), 链接到() 助手就可以了。