我們有一個建立表單的系統。表單元素的每個原型都是它自己的類,作爲ZF2的MVC中的一個模型。樹結構的類以及遍歷結構的每個類都將自己的HTML添加到總結果中。我知道這打破了MVC,但到目前爲止,這是一個自包含系統,運行良好。但一個問題是,我們希望能夠像路線名稱和參數那樣在其他控制器中從路由轉換爲URL。如何將路線轉換爲模型中的網址?
到目前爲止,我發現的唯一選擇是重構此代碼以符合MVC,並通過視圖渲染器推送所有html。有誰知道一些可以讓我們將路由轉換爲控制器或模型之外的URL的替代方法嗎?
我會試着解釋一下這個結構,而不會在這裏拋出一堆代碼。
abstract class Element
{
/**
* Each concrete element must create its own html
*/
abstract public function processHtml();
public function addChild(Element $element)
{
}
}
某些元素可以容納其他元素。所以它從一個根元素構建一個樹結構。然後在根上調用processHtml()開始遞歸到樹中。
public function processHtml()
{
$html = '<div>';
foreach($this->children as $element)
{
$html .= $element->processHtml();
}
$html .= '</div>';
return $html;
}
路由器可以爲給定的路由名稱返回一個路徑,所以聽起來好像你需要通過這個路徑來傳遞它。雖然沒有更多的信息/代碼,但很難知道如何將它應用於你的情況。 –
@TimFountain更新了一些代碼片段來解釋它的結構。 – Chris
你的表單是否擴展'Element',或者是以其他方式添加到表單的元素? –