2008-11-28 3 views
6

Ich denke, dass ich das in der falschen Weise nähern könnte, so würde ich mich über Kommentare/Anleitungen freuen. Hoffentlich kann ich kohärent genug erklären, was ich zu erreichen bin versucht:Codeigniter - wie Code wiederverwenden, um einen Block von HTML zu erzeugen

  • Ich möchte einen Block von HTML erstellen (zB ein Feld eines Benutzers Profil enthält), die ich als Teil geladen wird meiner Layout auf den meisten Seiten, die ich erzeuge.

  • Ich würde auch gerne in der Lage den Inhalt innerhalb dieser Box selbst von einer separaten URL neu generieren. Dies ist, damit ich die Box mit einem AJAX-Anruf aktualisieren kann.

  • Ich möchte nicht den Code duplizieren, der diesen HTML erstellt.

Ich schätze, dass ich initally diese Box mit einem AJAX-Aufruf laden konnte, aber das scheint mir einen unnötigen Aufruf an den Server hinzufügen?

Die Art, wie ich dachte, ich könnte es tun, indem ich eine Methode in meinem Controller habe, die nur diesen HTML-Block rendert, aber wie würde ich dann die Ausgabe von dieser Methode in einem anderen Controller/View anfordern?

Wie würden Sie das angehen?

Vielen Dank im Voraus

Antwort

7

eine Ansicht Erstellen Sie den HTML-Block für das Profil des Benutzers und rufen Sie es von Ihrem Controller zu erzeugen:

$user_html = $this->load->view('user_view', $user_data, true); 

Der dritte Parameter gibt den Blick als Zeichenfolge statt es anzeigen. Dies kann dann in üblicher Weise in eine andere Ansicht übertragen werden.

$data['user_block'] = $user_html; 
$this->load->view('page_view', $data); 
+0

Sie erhalten jedoch keine separate URL, die Sie für einen AJAX-Anruf verwenden können. – victoriah

+0

THanks.Ich nehme an, der Schlüssel hier ist, die gesamte Verarbeitung der Daten in das Modell zu bringen, damit ich so wenig Code wie möglich im Controller habe. –

+0

Und es reduziert nicht die Code-Duplizierung. – victoriah

-1

Was die Daten angeht, brauchen Sie den HTML-Code nicht mit PHP zu generieren. Sie können jQuery verwenden, um die erforderlichen Elemente aus einer JSON-Objektausgabe in der Seitenquelle zu generieren. Sie können dann eine nette kleine "Lade" -Animation auf dem Element anzeigen, während es den Zustand "dominant" erreicht.

Soweit ein div repopulating betrifft, wie folgt vorgehen:

ein div für Ihr Profil machen und eine ID geben. Setzen Sie jedes "Element" von Daten in ein eigenes p-Element und umhüllen Sie die tatsächlichen Daten in einem span-Element. z <p> Name:   <Spanne> Joe Bloggs </span > </p > Dann einfach jQuery verwenden, um den dom und besiedeln der Spannweiten mit Daten zu durchlaufen. Stellen Sie nur sicher, dass Sie Ihre Daten in der richtigen 'Reihenfolge' ausgeben.

Haben Sie Fragen, zögern Sie nicht zu bewerten.

+1

Ich sehe Ihren Punkt, aber ich würde lieber Javascript verwenden, um eine Website schrittweise zu verbessern, anstatt sich darauf verlassen für Dinge, die ich wirklich tun sollte Server-Seite –

+0

Bitte geben Sie ein Beispiel für die Art von HTML, die Sie generiert werden möchten dynamisch. – Jay

Verwandte Themen