Ich möchte in meinem GridView auf die <td>-Tags ein Onclick setzen, mit dem ich dann einen Controller-Aufruf mache und Daten dort hin übergebe.
Problematik dabei ist, dass die Variablen/Objekte einfach mal leer sind innerhalb der htmlOptions.
Ich habe schon verschiedene Sachen ausprobiert, aber keines hat mich wirklich zu einer Lösung gebracht. Ich hoffe, das mir hier evtl. jemand helfen kann.
Ob der Controlleraufruf so passt, weiß ich nicht. Funktionieren tut es auf jeden Fall. Ich lasse mir da ein Datum in dem Div zurückgeben. Das Objekt im onclick ist an der Stelle leer und dementsprechend kann da auch nichts übertragen werden.
probier mal das $data->id in Anführungszeichen zu setzen.
//...
'data' => array(
'id' => '$data->id',
)
Ich glaube mich erinnern zu können das wenn ein PHP-Ausdruck ohne Anführungszeichen geschrieben wird, wird er einmal am Anfang für das Grid ermittelt. Wenn er in Anführungszeichen geschrieben wird, wird er für jede Row in deinem CGridView geparsed (mit eval?!?) und dementsprechend ermittelt.
Es möge mich jemand korrigieren falls das so nicht stimmt.
Hab mich glaube gerade selber bestätigt da ich die dafür zuständige Method in der CComponent Klasse gefunden habe => evaluateExpression
Wie du am Code dieser Methode sehen kannst wird, falls es sich um einen String handelt (deshalb die Anführungszeichen), mit eval das Ergebnis dieses PHP-Ausdruckes ermittelt und zurückgegeben.
wie in deinem Beispiel in Anführungsstrichen setze, wird es als String übergeben, aber nicht geparst. Das habe ich auch schon mehrfach probiert. Ich habe auch mal probehalber das ganze
CHtml::ajax(...),
in Anführungsstrichen gesetzt, in der Hoffnung das es dann vielleicht geht, auch das geht nicht.
Ich kapier noch nicht ganz, was du eigentlich erreichen willst (Demo-HTML wie’s aussehen soll wäre hilfreich). Aber evtl. hilft dir das schon mal weiter:
Da gibt es nicht viel zu erklären. Ich habe ein GridView, also eine Tabelle. In jeder Zelle steht ein Wert. Man könnte auf jeden Wert ein Link zum Controller setzen. Ich möchte aber direkt in die Zelle klicken um den Controller aufzurufen.
Ich habe es nun so gemacht, das ich doch auf jeden Wert einen Link zum Controller setze und dieses per
CSS:
.td_link {
display: block;
cursor: pointer;
}
Auf die ganze Zelle verteile. Funktionieren tut es jedenfalls.