2008-08-29 34 views

Respuesta

7

Si su objetivo es tener URLs amigables a través de su aplicación, utilice el siguiente enfoque:

1) Crear una regla de enrutamiento para el módulo/acción en el archivo routing.yml de la aplicación. El siguiente ejemplo es una regla de enrutamiento para una acción que muestra los más recientes preguntas en una aplicación, el impago a la página 1 (usando un localizador):

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

2) Una vez que se establece la regla de enrutamiento, los auxiliares de url_for() en su plantilla para formatear las URL salientes.

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

En este ejemplo, se construirá la siguiente dirección URL: http://myapp/questions/recent/1.html. 3) El sistema de enrutamiento analizará las URL (solicitudes) entrantes y si se encuentra una coincidencia de patrón en la configuración de la regla de enrutamiento, los comodines nombrados (es decir, la parte :/page de la URL) se convertirán en parámetros de solicitud.

También puede usar el ayudante link_to() para generar una URL sin utilizar la etiqueta HTML <a>.

+0

Solo un comentario, pero la URL no se construirá con la parte .html a menos que la aplicación esté configurada para hacerlo (de manera predeterminada no lo está). –

1

Este consejo es para symfony 1.0. Probablemente funcionará para versiones posteriores.

Dentro de su clase sfAction:

cadena genUrl ($ parámetros = array(), $ absoluta = false)

por ejemplo. $ this-> getController() -> genUrl ('yourmodule/youraction? Key = value & key2 = value', true);

En una plantilla:

Esto generará un enlace normal.

cadena link_to ($ nombre, $ internal_uri, $ options = array());

por ejemplo. link_to ('Mi nombre de enlace', 'yourmodule/youraction? Key = clave & clave2 = valor');

0

Además, si usted quiere realmente una cadena de consulta con la url, utiliza este:

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

De lo contrario, va a tratar de ruta como parte de la url y probablemente romper su acción.

0

Puede generar URL directamente sin definir primero la regla.

Si desea generar URL en las acciones, puede utilizar generateUrl() ayudante:

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

Si desea generar URL en las plantillas, puede utilizar url_for() ayudante :

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

establezca $ absolute como verdadero/falso, no olvide usar echo si desea visualizarlo.

Pero si se quiere hacer un enlace (algo así como <a href=""></a>), link_to() ayudante va a hacer.

Cuestiones relacionadas