Ben bir web sitesi oluşturmak için (uskur ORM ile) Symfony 1.2.9 kullanıyorum. Ben yönetici işlevselliğini uygulamak için yönetici jeneratör kullanarak başladı.
Ancak hafif bir 'sorun' rastlamak var. Benim modelleri (: N ilişkiler ve N: N ilişkileri, örneğin bir tablo birkaç 1 olabilir) ilişkilidir. Ben tatmin edici Henüz bu adrese bir yol bulmuş değil. (Liste görünümleri için) bir taktik çözüm olarak, ben sadece ana nesneyi göstermek için karar verdi, ve sonra ilgili nesneleri göstermek için etkileşimleri eklemek var.
Ben bunu açıklamak için bir blog modelini kullanacağız.
Burada bir blog model için ilişkiler şunlardır:
N:M relationship with Blogroll (models a blog roll) 1:N relationship with Blogpost (models a post submitted to a blog)
Birisi nezaketini sürece - Ben aslen AJAX kullanarak, seçili bir blog için (disk belleği) blogpost listesi, görüntüleme, ama olduğu gibi ben yönetici jeneratör ile yeterince mücadele ediyorum amacı vardı, bu yüzden ben bu fikri rafa var Bu nasıl biraz ışık tutacak.
Bunun yerine, ne şimdi (bir taktik / geçici çözelti gibi) yapıyorum, ben bir kullanıcı izin liste görünümüne etkileşimleri eklemiş olduğunu:
View a list of the blog roll for the blog on that row
Bu satır üzerinde blog için mesajların bir listesini görüntüleme
Tha satırda blog için bir yazı ekle
Yukarıdaki tümünde, temelde incelikleri eylem (oluşturulan yönetici) isteği iletecek eylemleri yazdım. Ancak, doğru blog rulo ya da post blog listesi vb döndürülür, böylece (blog id vb gibi) bazı parametreler geçmek gerekir.
Ben ne yapmak istediğinizi yapmanın daha iyi bir yolu vardır eminim, ama durumda benim sorular şunlardır yoktur:
How may I obtain the object that relates to a specific row (of the
clicked link) in the list view (e.g. the blog object in this example)Once I have the object, I may choose to extract various fields: id etc. How can I pass these arguments to the admin generated action ?
İkinci soruya gelince, benim tahminim (yanlış olabilir) bu bunu yapmak için bir yol olabilir yani
public function executeMyAddedBlogRollInteractionLink(sfWebRequest $request)
{
// get the object *somehow* (I'm guessing this may work)
$object = $this->getRoute()->getObject();
// retrieve the required parameters from the object, and build a query string
$query_str=$object->getId();
//forward the request to the generated code (action to display blogroll list in this case)
$this->forward('backendmodulename',"getblogrolllistaction?params=$query_string");
}
Bu kesmek bir bit gibi hissediyor, ama ben bu konuda gitmek için başka nasıl emin değilim. Ben de params'ı gönderme bulunmaya hevesli değilim (ne bir tarayıcı istekleri yapıyor görmek oldukça sraightforward olduğu bir GET User_id vb içerebilir, hatta bir POST, o kadar güvenli değildir). 1 veya daha fazla M nesneler için gerekli olan yönetim, bu tür uygulamak için yukarıdaki önermek ne daha iyi bir yolu var ise: N ilişkiler, ben bu konuda giderek "önerilen" bir şekilde duymak çok mutluluk duyacağız.
Ben iç gibi belirli eylemleri işaretleme okumayı unutmayın. yani çağrılabilir sadece app içinde. Ben bu durumda yararlı olacaktır acaba?