Nasıl Symfony PHP bir dostu URL oluşturur?

4 Cevap php

Ben her zaman bağlantıları yapmak için bu yerleşik symfony işlevleri unutma eğilimindedir.

4 Cevap

Amacınız uygulama boyunca kullanıcı dostu URL'ler var ise, aşağıdaki yaklaşım kullanın:

1) Uygulamanın routing.yml dosyasında modül / eylem için bir yönlendirme kuralı oluşturun. Aşağıdaki örnek, (a çağrı cihazı kullanarak) sayfa 1 varsaymak, bir uygulamada en son soruları gösteren bir eylem için bir yönlendirme kural şudur:

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

Yönlendirme kuralı ayarlandıktan sonra 2), giden URL'leri biçimlendirmek için şablonunda url_for() yardımcıyı kullanın.

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

Bu örnekte, aşağıdaki URL inşa edilecektir: http://myapp/questions/recent/1.html.

3) Gelen URL'ler (istekleri) yönlendirme sistem tarafından analiz edilecek ve bir model maç yönlendirme kuralı yapılandırmada bulunursa, adlandırılmış joker ({[(0 yani)]} URL bölümü) isteği olacaktır parametreleri.

Ayrıca HTML <a> etiketi kullanmadan çıkışına bir URL için link_to() yardımcısı kullanabilirsiniz.

Bu tavsiye Symfony 1.0 içindir. Muhtemelen daha sonraki sürümleri için çalışır.

Within your sfAction class:

dize genUrl ($ parametreler = array (), $ mutlak = false)

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

In a template:

Bu normal bir bağlantı oluşturur.

dize link_to ($ isim, $ internal_uri, $ seçenekler = array ());

eg. link_to('My link name', 'yourmodule/youraction?key=value&key2=value');

Aslında bu url ile bir sorgu dizesi istiyorsanız ek olarak, bu kullanın:

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

Aksi takdirde, bu url parçası olarak rotası için deneyin ve olasılıkla eylem kırmak için gidiyor.

Önce kuralı tanımlamak olmadan doğrudan URL oluşturabilir.

Eğer eylemler URL oluşturmak istiyorsanız, generateUrl() yardımcı kullanabilirsiniz:

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

Eğer şablonları URL oluşturmak istiyorsanız, url_for() yardımcı kullanabilirsiniz:

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

Bunu görüntülemek istiyorsanız yankı kullanmayı unutun, doğru / yanlış olarak mutlak $ ayarlayın.

Ama bir link (gibi bir şey <a href=""></a>), link_to() yardımcı yapacağız yapmak istiyorsanız.