2013-02-18 85 views
1

在我的一個催化劑操作中,我正試圖在另一個控制器中獲取另一個操作的主體響應(HTML)。 (對於排序在另一種「嵌入」一個頁面的目的)

我想這樣做,這是一個$c->visit的方式。 (如果我誤解$ C->訪問,那麼我的問題的其餘部分不需要回答。)

有問題的行動發生的ARG,但直到進一步環比下滑,這看起來是這樣的:

/equipment/*/assets/widget 


/assets/captureID (1) 
-> /assets/base (0) 
-> /assets/pageData (0) 
=> /assets/widget 

正如你所看到的,只有鏈中的最後一個動作是尋找一個arg。

如果我嘗試:

$c->visit('/assets/widget',[$arg]); 

我希望它去環比下跌,給/資產/ captureID我的$ arg。但事實上,它似乎並沒有完全通過鏈條。

我哪裏迷路了?

回答

1

正如你所發現的那樣,身體在那時不存在。您必須撥打電話才能呈現您的視圖,或者爲/ assets/widget安排直接設置$c->res->body($foo)。我覺得非常規的捕捉子請求的主體的想法,以溫和地說。我無法想象你將如何處理它,這不會違背良好的MVC設計原則。

這聽起來好像是在/資產/插件必須位於模型而不是控制器,以便它可以用任何功能要求它使用的邏輯。

和/或你需要打破你的模板分解成(可重複使用)的部件,所以,無論內容,您打算嵌入可以做一個單一的渲染過程的一部分。

[%- IF foo; 
     PROCESS widget.tt; 
    END; -%] 
0

只顯示捕獲,而不是參數鏈傳遞。

據商務部:

$ C->訪問($行動[,\ @captures,\ @arguments])

所以我能夠做有成功以下:

$c->visit('/assets/widget',[$arg],[$arg]) 

args來第一陣列命中的第一個動作並停止,但第二個數組行進一路下跌鏈像我想要的。

我預計$c->visit('/assets/widget',[],[$arg])工作,但事實並非如此。

然而,所有這些後,我意識到,我不能只抓身體反應那種方式,這是最終的目標。無論哪種方式,希望我的鵝追逐對某人有幫助。