私のテキストでは、ユーザーは次のようなモジュールを入力できます。[[form:contact]]
、モジュールとその名前を表します。[[module:name]
次のコードを使用して、これをテキストから撤回し、分割して、必要なデータベースから情報を取得し、置き換えます。
これが最善の方法ですか?それはうまく機能しますが、これが最も効率的な方法であるかどうかはわかりません。
ZendFrameworkを使用しています。
これはコードです:
$start = strpos($this->view->page->text, "[[");
$end = strpos($this->view->page->text, "]]");
$length = $end-$start+2;
$getModuleTag = substr($this->view->page->text, $start, $length);
$length = $end-$start-2;
$removeTags = substr($getModuleTag, 2, $length);
$split = strpos($removeTags, ":");
$GetModuleSort = substr($removeTags, 0, $split);
$GetModuleName = substr($removeTags, $split+1);
// Get the wanted data from the database
switch($GetModuleSort)
{
case 'form':
$this->result = $this->formsService->GetFormByName($GetModuleName);
$replaceTag = $this->result->elements;
break;
}
// TEST OUTPUT
$final = str_replace($getModuleTag, $replaceTag, $this->view->page->text);
$this->view->finalOutput = $final;