Pregunta

Siempre tiendo a olvidar estos integrado Symfony funciones para hacer enlaces.

¿Fue útil?

Solución

Si tu objetivo es tener URLs amigables en toda la aplicación, utilice el siguiente enfoque:

1) Crear una regla de enrutamiento para su módulo/acción en la aplicación de enrutamiento.fichero yaml.El siguiente ejemplo es una regla de enrutamiento para una acción que muestra el más reciente preguntas en una aplicación, por defecto la página 1 (utilizando un localizador):

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

2) una Vez que la regla de enrutamiento de uso de la url_for() ayudante en su plantilla a formato saliente Url.

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

En este ejemplo, la dirección URL siguiente será construido: http://myapp/questions/recent/1.html.

3) las direcciones Url Entrantes (solicitudes), será analizado por el sistema de enrutamiento, y si un patrón de coincidencia se encuentra en la regla de enrutamiento configuración, el nombre de comodines (es decir.el :/page parte de la dirección URL) se convertirán en los parámetros de solicitud.

También puede utilizar el link_to() auxiliar a la salida de una URL sin necesidad de utilizar el HTML <a> de la etiqueta.

Otros consejos

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

Dentro de su sfAction clase:

cadena de genUrl($parameters = array(), $absoluta = false)

por ejemplo.$this->getController()->genUrl('yourmodule/youraction?clave=valor&clave2=valor', true);

En una plantilla:

Esto generará un enlace normal.

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

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

Además, si usted realmente desea una cadena de consulta con la dirección, puede utilizar esta:

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

De lo contrario, iba a tratar de ruta como parte de la url y el salto probable de su acción.

Usted puede generar URL directamente sin definir la regla primera.

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

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

Si desea generar URL de las plantillas, puede utilizar url_for() helper:

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

conjunto de $absolutos como verdadero/falso, no te olvides de usar echo si desea mostrar.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top