[Dieser Artikel stammt aus: Mengxi Notes]
Joomla ist ein hervorragendes CMS-System, das Ihnen die schnelle Fertigstellung einer Website ermöglicht . Module und Vorlagen können die meisten Ihrer Website-Anforderungen erfüllen. Komponenten spielen dabei eine wichtige Rolle.
1. Grundkenntnisse
Komponente (Komponente) wird verwendet, um die Hauptdaten der Seite anzuzeigen. Die Komponenten von Joomla werden mithilfe der MVC-Architektur entworfen. Wenn eine Seitenanforderung generiert wird, kann ihre URL Aufgabe, Ansicht, Layout und andere Informationen enthalten. Ich bin hier, um diese Aufgabe und Ansicht zu besprechen. Wenn die URL eine Aufgabe enthält, enthält sie im Allgemeinen keine Ansicht. Dies liegt daran, dass Joomla davon ausgeht, dass die Aufgabe eine bestimmte Aufgabe abschließt, z. B. eine Datenbankoperation, eine Gültigkeitsüberprüfung usw., und eine Ansicht für die Anzeige der Daten verantwortlich. Das übliche Design besteht darin, dass nach Abschluss der Aufgabenverarbeitung in der Aufgabe die setRedirect-Methode aufgerufen wird, um sie zu einer Ansicht zum Anzeigen von Daten zu führen. Wenn in Joomla die Aufgabe nicht in der URL angegeben ist, ist die Standardaufgabe tatsächlich die Anzeige.
2. Problem
Im Projekt ist es notwendig, offene Grafikprotokolldaten in die Metadaten der Seite aufzunehmen. Ein offenes Grafikprotokoll wird verwendet, um sozialen Netzwerken Beschreibungen der zu teilenden Daten bereitzustellen. Wenn Ihre Seite durch eine Aufgabe vervollständigt wird und Sie dann setRedirect in der Aufgabe verwenden, um basierend auf den Daten zur Autorisierungsüberprüfung zu verschiedenen Ansichten zu springen und nach bestandener Überprüfung die Datenseite anzuzeigen, kann dieses Problem auftreten: Sie benötigen Zum Teilen Für diese Seite haben Sie Open Graphic Protocol-Daten zu den Metadaten dieser Seite hinzugefügt. Wenn Sie sie mit sozialen Netzwerken wie Facebook, Google usw. teilen möchten, werden Sie feststellen, dass die auf der Seite angezeigten Daten und Bilder angezeigt werden Bei der freigegebenen Seite handelt es sich nicht um die Daten, die Sie auf der Seite anzeigen möchten.
3. Lösung
Das oben genannte Problem liegt daran, dass die Open-Graphic-Protokoll-Datenerfassung keine Sprünge unterstützt. Wenn Sie auf einen Sprung stoßen, gehen Sie normalerweise zum Abholen auf die Homepage der Website die Daten, und das ist nicht das, was wir wollen. Das Problem ist setRedirect. Das Prinzip von setRedirect besteht darin, dass der an den Browser gesendete HTML-Header Sprunganweisungen enthält. Die Lösung des oben genannten Problems besteht nicht darin, setRedirect zu verwenden, sondern display zu verwenden. Sie müssen lediglich die Ansicht, das Layout und andere Daten festlegen, die Sie in der Eingabe übergeben möchten, und diese dann aufrufen Anzeigemethode.
Das Folgende ist der Beispielcode:
/** * 内部跳转,用于代替setRedirect. 为什么要这样子做呢? * 因为 setRedirect他会发送一个http头到浏览器,让浏览 * 进行跳转,这样一来就多了一个网络请问, 这是其一。最 * 为主要的是setRedirect在某些不支持浏览器redirect的情况 * 下达不到效果,例如:open graphic protocal * * @param type $view 要显示的view * @param type $layout 要显示的layout, 默认为NULL */ protected function internalRedirect($view, $layout=null){ $this->input->set("view", $view); $this->input->set("layout", $layout); return $this->display(); } public function checkAvailable(){ //其他的业务代码 $this->input->set('tmpl', 'doexam'); return $this->internalRedirect("doexam", $layout); }
Der obige Code ist in Ihren Controller geschrieben. Die Funktion internalRedirect zeigt die Seite an, indem sie die Ansicht und das Layout in $input festlegt (diese Eingabe bezieht sich auf den Eingabeparameter der URL) und dann direkt die Anzeigemethode von JControllerLegecy aufruft.
In der checkAvailable-Methode werden vor dem Aufruf von internalRedirect auch andere für die Ansicht erforderliche Parameter festgelegt.
Ein Freund von Mengxi sagte, dass er beim Erstellen einer seiner Websites auf ein solches Problem gestoßen sei. Wir haben den Joomla-Implementierungscode besprochen und analysiert und festgestellt, dass die Lösung eigentlich ganz einfach ist, solange man mit Joomla vertraut ist Komponentenentwicklung. Wenn Sie Fragen haben, können Sie mit mir sprechen
Ich hoffe, dieser Artikel kann die Probleme lösen, auf die Sie stoßen.
Das Obige stellt eine ausführliche Untersuchung von Aufgaben und Ansichten in Joomla vor, einschließlich der Inhalte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.