Fehlermeldung Modul: Bld mit ALT und Title

Wie verwendet man Module oder Aktion und passt diese an.

Fehlermeldung Modul: Bld mit ALT und Title

Beitragvon martinpet » 17. Okt 2008, 12:43

Hallo an alle.

Ich habe erst vor wenigen Tagen angefangen mich mit Redaxo zu beschäftigen, deshalb bitte ich um Gnade ;-)

Es handelt sich um dieses simple Modul.


Das Modul funktioniert leider nicht in 4.1
Fehlermeldung im Backend:

Fatal error: Call to a member function getTitle() on a non-object in C:\xampp\htdocs\_meineseite\redaxo\include\classes\class.rex_article.inc.php(596) : eval()'d code on line 90


Der Fehler liegt wird durch den folgenden PHP-Code in der Eingabe verursacht:

Code: Alles auswählen
<?php $media = OOMedia::getMediaByName('REX_FILE[1]');
$mediaTitle = $media->getTitle();
$mediaDescription = $media->getValue('med_description');
?>


Wenn ich den Teil weglasse, gibt es keine Fehlermeldung, aber dann werden die Werte für Titel und Beschreibung auch nicht aus der DB gelesen.


Kann jemand abhilfe schaffen?
Zuletzt geändert von martinpet am 17. Okt 2008, 18:23, insgesamt 1-mal geändert.
martinpet
 
Beiträge: 52
Registriert: 17. Okt 2008, 12:06

Beitragvon martinpet » 17. Okt 2008, 18:21

Ich glaube ich komme der Sache näher :D

Nach dem ich den ganzen Tag mit der Sache verbracht habe, verstehe ich nun woran es liegt, weiss aber noch nicht wie ich es für den täglichen Einsatz löse.

Die Fehlermeldung taucht auf, weil beim Aufrufen des Modus noch kein Bild ausgewählt ist und somit auch keine Daten in den Variablen vorhanden sind. Schliesslich kann nichts verarbeitet werden, was nicht da ist.

Beim Aufruf des Moduls ist also das Medienauswahlfeld vorhanden und darunter die Fehlermeldung. Wenn ich nun ein Bild auswähle, weiss das PHP-Script leider nicht, dass es die Auswahl berücksichtigen und somit verarbeiten soll, da es schon durchgelaufen ist. Wenn ich die Seite aktualisiere ist der Inhalt des Eingabefeldes wieder leer. Wenn ich die Auswahl mit der Returntaste übernehme (die Schaltfläche "Block hinzufügen" ist wegen der Fehlermeldung nicht vorhanden), dann wird das Bild übernommen - allerdings ohne den Titel und die Description. Wenn ich diesen Block nun aber bearbeite, gibt es keine Fehlermeldung, denn das Script hat nun auf Grundlage der bestehenden Bildauswahl gefüllte Variablen. Entsprechend sind nun die Felder mit Titel und Desc. gefüllt. Wenn ich den Block nun speichere, habe ich mein geünschtes Ergebnis. Ich suche einen Weg, wie ich das etwas weniger umständlich erreiche ;)

Das Script muss doch erst ablaufen wenn eine Bildauswahl erfolgt ist. Wie war die Verwendung des Scriptes denn vorgesehen, wenn es solche Probleme gibt?

Wie kann ich das lösen?

Bin über jeden Hinweis und jede Hilfe dankbar.

Grüße

Martin
martinpet
 
Beiträge: 52
Registriert: 17. Okt 2008, 12:06

Beitragvon ciss » 17. Okt 2008, 20:20

Rettung naht: ;)

Code: Alles auswählen
Bild:<br />
REX_MEDIA_BUTTON[1]

<?php
$media = OOMedia::getMediaByName('REX_FILE[1]');
$mediaTitle = ('REX_VALUE[1]' == '' && $media) ? $media->getTitle() : 'REX_VALUE[1]';
$mediaDescription = ('REX_VALUE[2]' == '' && $media) ? $media->getValue('med_description') : 'REX_VALUE[2]';
?>
<label for="mediaTitle">ALT-Text (Bildtitel)</p>
<input type="text" size="80" id="mediaTitle" name="VALUE[1]" value="<?php echo $mediaTitle;?>"><br />
<label for="mediaDescription">TITLE-Text (Beschreibung)</p>
<input type="text" size="80" id="mediaDescription" name="VALUE[2]" value="<?php echo $mediaDescription;?>">


Ungetestet, aber so sollte es klappen. Fragt jetzt ab, ob ein Objekt überhaupt zurückgegeben wurde (also das Bild vorhanden ist) und ob noch keine Eingabe vorgenommen wurde. Ist beides der Fall werden Titel und Beschreibung aus den MetaInfos übernommen, ansonsten die eingegebenen Werte.

Gruß, Fabian
Benutzeravatar
ciss
 
Beiträge: 359
Registriert: 8. Feb 2008, 04:24
Wohnort: Berlin

Beitragvon martinpet » 18. Okt 2008, 12:03

Hey, dank dir für die Hilfe.

Die Fehlermeldung ist weg. Titel und Beschreibung werden aber nicht übernommen. Meine Gedanken zur Ursache: Der Code läuft beim Aufruf des Moduls komplett ab. Wenn ich ein Bild auswähle, wird der Code nicht nochmal durchlaufen.

Ich glaube, dass dies schwer lösbar sein wird.

Um trotzdem das erwünschte Ergebnis zu erhalten, würde ich gern versuchen die Variablen direkt an die Ausgabe zu übergeben, ohne den Umweg über die Formularfelder zu gehen.

Ist es sinnvoll den betrefffenden Code-Teil in der Ausgabe ablaufen zu lassen, da hier eine Bildauswahl ja bereits erfolgt ist?

Weisst du worauf ich hinaus möchte?

Man müsste nach meinem Verständnis in der Eingabe nur den Rex_Media_Button belassen und den folgenden Teil in die Ausgabe verfrachten:

Code: Alles auswählen
$media = OOMedia::getMediaByName('REX_FILE[1]');
$mediaTitle = $media->getTitle();
$mediaDescription = $media->getValue('med_description');


Also in etwa folgendes:

Eingabe:

Code: Alles auswählen
Bild:<br />
REX_MEDIA_BUTTON[1]


Ausgabe:

Code: Alles auswählen
<?php
$media = OOMedia::getMediaByName('REX_FILE[1]');
$mediaTitle = $media->getTitle();
$mediaDescription = $media->getValue('med_description');
?>
<img src="<? echo $REX["HTDOCS_PATH"]; ?>/files/REX_FILE[1]" title="REX_VALUE[2]" alt="REX_VALUE[1]" />


Ich bin überzeugt, dass ich auf dem richtigen Weg bin.
Leider funktioniert es nicht. Die Title- und Alt-Werte werden nicht übernommen.

Was ist falsch? :shock:
martinpet
 
Beiträge: 52
Registriert: 17. Okt 2008, 12:06

Beitragvon therancher » 18. Okt 2008, 12:51

wenn du das so lösen willst - ich würde es auch so machen - musst du natürlich auch die metadtaen des bildes ausgeben, also Ausgabe:
Code: Alles auswählen
<?php
$media = OOMedia::getMediaByName('REX_FILE[1]');
$mediaTitle = $media->getTitle();
$mediaDescription = $media->getValue('med_description');
?>
<img src="<? echo $REX["HTDOCS_PATH"]; ?>/files/REX_FILE[1]" title="<?php echo $mediaTitle; ?>" alt="<?php echo $mediaDescription; ?>" />


gruss HarryT
spontanität will wohl überlegt sein!
therancher
 
Beiträge: 489
Registriert: 29. Jan 2007, 17:32
Wohnort: Sachsen

Beitragvon ciss » 18. Okt 2008, 14:07

Du musst den Block mit der bedingten Zuweisung natürlich auch in die Ausgabe übernehmen, so dass diese dann so aussieht:

Code: Alles auswählen
<?php
$media = OOMedia::getMediaByName('REX_FILE[1]');
$mediaTitle = ('REX_VALUE[1]' == '' && $media) ? $media->getTitle() : 'REX_VALUE[1]';
$mediaDescription = ('REX_VALUE[2]' == '' && $media) ? $media->getValue('med_description') : 'REX_VALUE[2]';

echo '<div class="image"><img src="' .$REX['HTDOCS_PATH'] .'/files/REX_FILE[1]" title="' .$mediaTitle .'" alt="' .$mediaDescription .'" /></div>';
?>


@therancher: in deiner Variante werden nur noch die MetaInfos, nicht aber die REX_VALUES übernommen.

Gruß, Fabian
Benutzeravatar
ciss
 
Beiträge: 359
Registriert: 8. Feb 2008, 04:24
Wohnort: Berlin

Beitragvon martinpet » 18. Okt 2008, 14:36

Ha!

Es funktioniert - sowohl mit, als auch ohne Formular.

Danke für Eure Hilfe. :D
martinpet
 
Beiträge: 52
Registriert: 17. Okt 2008, 12:06

Beitragvon therancher » 18. Okt 2008, 17:16

@fabian
:oops: habe nur die hälfte gelesen...
spontanität will wohl überlegt sein!
therancher
 
Beiträge: 489
Registriert: 29. Jan 2007, 17:32
Wohnort: Sachsen


Zurück zu Module/Aktionen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste