html Ausgaben ändern?

Moin Moin!

Zuerst:

Ich bin ein yii Newbie!

Also bitte nicht den Kopf einschlagen,

falls die Antwort auf die Frage doch ganz einfach sein und ich die Lösung übersehen haben sollte.

Ich habe nun schon über 2 Stunden gesucht und gelesen,

aber so wirklich schlauer fühle ich mich trotzdem nicht.

Es geht mir darum:

Wie kann ich die HTML Ausgaben die Yii erledigt nach meinen Wünschen entsprechend umdefinieren,

ohne dabei im Framework selbst Anpassungen zu machen?

Zum Beispiel rede ich jetzt mal von $form->errorSummary() …

(die Frae gilt aber auch für z.B. die Ausgabe der "Standard-Widgets")

Deren Standard Output scheint zum Beispiel zu sein:




<div class="errorSummary">

  <p>Please fix the following input errors:</p>

  <ul>

    <li>Password cannot be blank.</li>

    <li>Compare Password cannot be blank.</li>

  </ul>

</div>



Wie gehe ich es aber nun an, wenn ich stattdessen (Beispiel):




<table class="formError">

  <tr><th>Field Name</th><th>Error</th></tr>

  <tr><tr>Password</th><tr>cannot be blank.</th></tr>

  <tr><tr>Compare Password</tr><th>cannot be blank.</th></tr> 

</table>



als Ausgabe haben wollen würde?

Muss ich die Methode zur Ausgabe des HTML Codes überschreiben?

Wenn ja, wie ca. mache ich das (kleines Beispiel wäre nett)?

und wo muss ich die Datei speichern?

Danke schonmal vorab!

Info die nix mit der Frage zu tun hat:

Diese Meldung bekommen "Neuankömmlinge" in diesem Forum,

sobald Sie auch nur einen Smiley in ihrem Text posten.

Da beim Hinzufügen des Beitrags der Link zur Smiley-Grafik mit im Posting-Text auftaucht.

Hi und willkommen,

ich fürchte, das wird schwierig - zumindest wenn AJAX-Validierung noch funktionieren soll. Der Javascriptcode, der die Fehlermeldung per AJAX updated, ist auf dieses HTML-Markup zugeschnitten.

Falls AJAX kein Thema ist: Schau dir mal den Quelltext von CActiveForm::errorSummary an. Du könntest deine eigene Klasse in folgender Form nach components/MeinActiveForm.php legen:




 class MeinActiveForm extends CActiveForm

{

  public function errorSummary($models, $header=NULL, $footer=NULL,$htmlOptions=array ( )

  {

    // dein code hier

  }

}

Die bessere Variante dürfte aber sein, dein (jetzt mal angenommenes) Darstellungsproblem über CSS zu lösen. Rein semantisch ist eine <ul> (unordered list) hier die "richtigere" Variante gegenüber einer Tabelle.

Sie dir z.B. mal das hier an, wie breitgefächert man ULs per CSS stylen kann:

http://css.maxdesign…au/listamatic/

Zusatz:

Sorry, jetzt seh ich erst, dass du das Label noch gesondert behandeln willst. Dann fällt mir als schnellste Lösung nur ein, die jeweiligen Fehlermeldungen in deinem Model zu ändern, z.B.


array('name,password','required',

  'message'=>'<span class="label">{attribute}</span><span class="message">Darf nicht leer sein</span>'),

Danke, das hat mir sehr geholfen!

Ich habe nicht vor, das ganze in eine Tabelle zu klatschen.

Das war nur ein Beispiel…

In Wahrheit ging es mit um die Darstellung von abgerundeten Ecken… hehe

Habe immer mehrere Divs in einander gepackt und in die Ecken jeweils ne Grafik gesetzt,

damit es auch im IE funktioniert… Habe inzwischen aber auch festgestellt,

das dies viel einfacher und ohne ineinander geschachtelte Divs funktioniert.

Danke nochmals!