Pergunta

Eu sempre tendem a esquecer essas built-in O Symfony funções para fazer ligações.

Foi útil?

Solução

Se o seu objetivo é ter user-friendly URLs todo o aplicativo, use a seguinte abordagem:

1) Criar uma regra de roteamento para o seu módulo/acção da aplicação de roteamento.yml arquivo.O exemplo a seguir é uma regra de roteamento para uma ação que mostra as perguntas mais recentes em um aplicativo, padronizando a página 1 (usando um pager):

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

2) uma Vez que a regra de roteamento seja determinado, use o url_for() auxiliar no seu modelo para formatar a saída de URLs.

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

Neste exemplo, o URL a seguir serão construídos: http://myapp/questions/recent/1.html.

3) os URLs de Entrada de pedidos serão analisados pelo sistema de roteamento, e se um padrão de correspondência for encontrada na regra de roteamento de configuração, o nome de curingas (ie.o :/page parte do URL) torna-se o pedido de parâmetros.

Você também pode usar o link_to() auxiliar para a saída de um URL sem o uso de HTML <a> etiqueta.

Outras dicas

Este conselho é para symfony 1.0.Ele provavelmente irá funcionar para versões posteriores.

Dentro de sua classe sfAction:

cadeia genUrl($parameters = array(), $absoluta = false)

por exemplo.$this->getController()->genUrl('yourmodule/youraction?chave=valor&key2=valor', true);

Em um modelo:

Isso irá gerar um link normal.

cadeia link_to($nome, $internal_uri, $options = array());

por exemplo.link_to('Meu nome do link', 'yourmodule/youraction?chave=valor&key2=valor");

Além disso, se você realmente quer uma seqüência de consulta com que a url, você pode usar isto:

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

Caso contrário, ele vai tentar direcioná-la como parte da url e a provável quebra de sua ação.

Você pode gerar a URL diretamente, sem definir a regra primeira.

Se você deseja gerar URL em ações, você pode usar generateUrl() auxiliares:

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

Se você deseja gerar URL nos modelos, você pode usar url_for() auxiliares:

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

definir $absoluto como verdadeiro/falso, não se esqueça de usar o eco, se você deseja exibi-lo.

Mas se você quiser fazer uma link (algo como <a href=""></a>), link_to() auxiliar irá fazer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top