我正在使用Symfony 1.2.9(與Propel ORM)創建網站。我已經開始使用管理生成器來實現管理功能。向管理生成器生成的管理頁面添加交互
但是我遇到了一個輕微的'問題'。我的模型是相關的(例如,一個表可能有幾個1:N關係和N:N關係)。我還沒有找到一種方法來解決這個令人滿意的呢。作爲戰術解決方案(對於列表視圖),我決定只顯示父對象,然後添加交互以顯示相關對象。
我將使用博客模型來說明這一點。
這裏有一個博客模式的關係:
N:與博客鏈接中號的關係(機型博客卷) 1:N與博文關係(模型提交給博客的一篇文章)
我最初打算顯示博客的(分頁)博客帖子列表,當它被選中時,使用AJAX,但我用管理生成器掙扎了很多,所以我擱置了這個想法 - 除非有人足夠闡明瞭如何做到這一點。
相反,我現在所做的(作爲一種戰術/臨時溶液),是我加入互動的列表視圖,允許用戶:
查看該博客滾動列表在 博客上該行
查看這篇文章的博客上該行
列表添加後在博客上塔排
在以上所有內容中,我已經編寫了基本上將請求轉發給適當操作(管理員生成)的操作。但是,我需要傳遞一些參數(如博客ID等),以便返回正確的博客文章或博客文章列表等。
我肯定有做我想要做的更好的方法,但如果沒有在這裏是我的問題:
我如何可以獲取涉及特定對象行(的
點擊鏈接)的列表視圖(例如,在這個例子中,博客對象)一旦有了對象,我可能會選擇提取各個領域:ID等 如何傳遞這些管理員生成的操作的參數?
關於第二個問題,我的猜測是,這可能是爲了做到這一點(我可能是錯的)
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");
}
這感覺就像一個黑客攻擊的一位,但我不知道該怎麼辦。我也不會熱衷於發送參數(可能包括user_id等,通過GET,甚至POST也不是那麼安全,因爲瀏覽器正在做什麼請求是相當有前途的)。如果有一種比我上面提出的更好的方式來實現具有1個或更多M:N關係的對象所需的這種管理,我將非常高興聽到「推薦」的方式。
我記得閱讀有關標記某些行動爲內部。即只能從應用內調用。我想知道在這種情況下這是否有用?
嗨本 - 道歉的延遲響應。關於你的建議,有一個小問題(至少AFAI知道)。博客和博客帖是不同的模型,因此屬於不同的模塊。看起來在你的解決方案中,部分模板需要在同一個模塊中......? (* Sigh *) – 2009-12-14 14:58:03
基本上,我需要找到一種將參數從一個模塊傳遞到另一個模塊的方法,同時使用'添加交互'到列表視圖。這就是我要去的地方... – 2009-12-14 14:59:51
_postlist部分進入博客模式(我應該稱之爲評論列表)。將它放在那裏是正確的,它是指向與特定博客文章相關的評論列表的鏈接。 – benlumley 2009-12-14 16:06:22