Dans mon texte, l'utilisateur peut entrer des modules qui ressemblent à ceci; [[form:contact]]
, représentant un module et son nom; [[module:name]
Est-ce la meilleure façon de remplacer une étiquette?
J'utilise le code suivant pour le retirer du texte, et le scinder, obtenir les informations de la base de données que je veux et les remplacer.
Est-ce la meilleure façon? Cela fonctionne bien, mais je ne suis pas sûr si c'est le moyen le plus efficace, et je me demandais whay vous y penseriez ...
Je travaille avec Zend Framework.
Voici le code:
$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;
Cependant, fonctionne-t-il avec plusieurs définitions de modules? – AndreKR
Je suppose que non, je ne l'ai pas encore essayé, mais je pense à limiter l'utilisateur en ajoutant un seul module afin qu'ils ne puissent pas créer des pages désordonnées pleines de modules qui n'ont rien à voir –
Ensuite c'est un bon moyen en termes de performance, mais il existe des moyens avec moins de code. – AndreKR