Bir sfPropelRoute nesneye Kriterleri enjekte

2 Cevap php

Ben kimin teklik PageDomain gelen bir Page nesne var. Şema yapılandırılmış olan page tabloda ilişki oluşturmak için bir page_domain_id alanı içerecek şekildedir. Bir sayfayı göstermek için, ben bir executeShow eylem ve bir özel işleyici var. Benim rota bu gibi görünüyor:

page_show:
  url:     /:domain_slug/:slug
  class:   sfPropelRoute
  options:
    model: Page
    type:  object
    method_for_criteria: doSelectByDomain
param:   { module: page, action: show }
requirements:
  sf_method: [get]

Bir örnek olarak, sahip olabilir /audience/create ve /behavior/create. Ben talep ediliyor hangi sayfa belirlemek gerekiyor.

Özel işleyicisi niyet (doSelectByDomain) domain_slug faktör ve etki alanı da doğru olup olmadığını sadece / bir sayfa göstermek almak olduğunu. Ne bulma kulüpler olsa, bir domain_slug parametresi eylemin $request parametrede kullanılabilir olsa, ben benim özel işleyicisi almanın hiçbir yolu olması bu yüzden olabilir Alınan ne çarpanlarına.

Benim modeli doğrudan sfContext nesneye erişebilir fark, ancak bu en iyi inelegant bulunuyor ve MVC kırar. Ben daha iyi bir yol gerçekten var ise bunu kullanmak için korkmuyorum, ama orada olmalı gibi görünüyor. Symfony liste yolları için setListCriteria yöntemini sunuyor, ama nesne yolları için benzer bir şey bulamıyorum.

Yardım? Teşekkürler.

2 Cevap

Ben nerede olması gerekiyordu bu yüzden kaynak kodu ile küçük bir girişim beni. Bu sfPropelRoute method_for_criteria seçeneği sunuyor, ama saygı sfObjectRoute ve method seçeneğini ve eğer varsa yerine bunu kullanır gibi görünüyor. Sadece method_for_criteria varsa, o zaman sfPropelRoute class istek parametreleri bir kriter nesnesi oluşturur.

Except that it doesn't include any parameters that aren't properties of the object. Ben bu davranışı için yapılacak bir argüman var olduğunu anlıyorum, ama benim görüşüme göre bu bir hata.

Neyse, kısa sürümü method seçeneğini kullanırsanız, tüm parametreler belirtilen işleyicisi bir dizi olarak (düzenleme olmaksızın) geçirilir olmasıdır. Eğer nesnenin özelliklerini olanlar dışındaki istek parametrelerini gerekiyorsa, bu gitmek için bir yol olarak görünüyor.

(Ben uskur etiketi, değil Symfony etiketi için bu okuyun) tamamen sorunu anlamak emin değilim, ancak herhangi bir yardım Advent Takvimi Advanced Routing bölüm nedir? Kod Doktrini için verilen, ama ben de uskur için uyarlayabilirsiniz sanırım edilir.