[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REX_MEDIA[] -> OOMedia Objekt... - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Mirko Steiner
Beiträge: 12
Registriert: 25. Mär 2009, 11:53

REX_MEDIA[] -> OOMedia Objekt...

29. Jul 2009, 15:13

hallo,

wenn ich im eingabebereich lediglich ein REX_MEDIA_BUTTON[1] habe, wie komme ich denn in der ausgabe an die beschreibung (description) die bei dem medium hinterlegt wurde?

habe versucht mir ein objekt zu holen

Code: Alles auswählen

$Medium = OOMedium::getMediaByFileName(REX_MEDIA[1]);
das geht aber nicht, irgenwie ,,verliert'' er den punkt im dateinamen... also asdf.png wird dann asdfpng.

ich mag nicht den user ein eingabefeld geben damit er nochmal eine beschreibung zu einem bild eingeben muss, weil die beschreibung laengst an dem medium haengt.

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: REX_MEDIA[] -> OOMedia Objekt...

29. Jul 2009, 15:17

Hallo Mirko!

Redaxo ersetzt stur die angegebenen Konstanten.

Richtig wäre also:

Code: Alles auswählen

$Medium = OOMedium::getMediaByFileName('REX_MEDIA[1]');
Das ergibt nach der Übersetzung (Substitution):

Code: Alles auswählen

$Medium = OOMedium::getMediaByFileName('datei.typ');
Das Fehlverhalten vorher lässt sich wie folgt erklären:
  1. Redaxo ersetzt zu:

    Code: Alles auswählen

    $Medium = OOMedium::getMediaByFileName(datei.typ);
  2. PHP wandelt nicht gefundene Konstanten in Strings um:

    Code: Alles auswählen

    $Medium = OOMedium::getMediaByFileName('datei'.'typ');
  3. Ergebnis:

    Code: Alles auswählen

    $Medium = OOMedium::getMediaByFileName('dateityp');
Zuletzt geändert von Xong am 29. Jul 2009, 15:19, insgesamt 1-mal geändert.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Mirko Steiner
Beiträge: 12
Registriert: 25. Mär 2009, 11:53

29. Jul 2009, 15:19

ah okay, das redaxo da erst mit seinem parser rübergeht habe ich schon verstanden ;-) nur hab ich nicht gewusst wie er das substituiert...

danke!

Mirko Steiner
Beiträge: 12
Registriert: 25. Mär 2009, 11:53

29. Jul 2009, 15:25

work like a charm!

Code: Alles auswählen

<?php
$Medium = OOMedia::getMediaByFileName('REX_MEDIA[1]');
printf('<img src="/images/%s" alt="%s" />', $Medium->getFileName(), $Medium->getDescription());
?>

Benutzeravatar
gemüsebrühe
Beiträge: 176
Registriert: 14. Feb 2007, 21:31

15. Nov 2009, 04:18

Kann es sein, dass das in R 4.2.1 nicht mehr like a charm funktioniert?

Mein Code:

Code: Alles auswählen

$mediacat = 1;
$gesamtdateien = OOMediaCategory::getCategoryById($mediacat); 
$gesamtarray = $gesamtdateien->getFiles();
shuffle($gesamtarray);
for ($a=0;$a<sizeof($gesamtarray);$a++) {
	$Medium = OOMedia::getMediaByFileName('$gesamtarray[$a]');
	printf('<img src="/files/%s" alt="%s" />', $Medium->getFileName(), $Medium->getDescription()); 
} 
Meine Fehlermeldung:

Code: Alles auswählen

Call to a member function getFileName() on a non-object
unbezahlbar :( *help* !

edit:

So ein Mist,
Wichtige Änderungen (gegenüber Redaxo 3.2)

[...]

Umbenennungen (in Kurzform)

* function_rex_modrewrite.inc.php -> function_rex_url.inc.php
* login -> rex_login
* sql -> rex_sql
* article -> rex_article
* sql::query() -> sql::setQuery()
* sql::resetCounter() -> sql::reset()
* sql::nextValue() -> sql::next()
* sql::where() -> sql::setWhere()
* OOMedia::getDescription() -> OOMedia::getValue('med_description')
* OOMedia::getCopyright() -> OOMedia::getValue('med_copyright')
* OOArticle::getKeywords() -> OOArticle::getValue('art_keywords')
* OOArticle::getDescription() -> OOArticle::getValue('art_description');
* OOArticle::getFile() -> OOArticle::getValue('art_file');
* OOCategory::getKeywords() -> OOCategory::getValue('art_keywords')
* OOCategory::getDescription() -> OOCategory::getValue('art_description');
* OOCategory::getFile() -> OOCategory::getValue('art_file');
(siehe http://wiki.redaxo.de/index.php?n=R4.Entwicklerhinweise)

DAS steht noch nicht im cheatsheet... *grr*
So clickable, design is lickable.
Code is poetry.

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

15. Nov 2009, 09:19

Hej,

das hat mit den "wichtigen Änderungen" nichts auf sich.

Das was du zitierst ist momentan immer noch vorhanden und sollte auch funktionieren.

Du solltest innerhalb deiner Schleife überprüfen ob $Medium auch ein Objekt ist.
Ich vermute nämlich das bei einem Bild $Medium nicht existiert.

vg Thomas

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

15. Nov 2009, 09:24

gemüsebrühe hat geschrieben:
Wichtige Änderungen (gegenüber Redaxo 3.2)
Ich weiß zwar nicht, was du meinst, was diese Änderungen mit deinem Problem zu tun haben, aber die Ursache deines Problems liegt eher hier:
gemüsebrühe hat geschrieben:

Code: Alles auswählen

$Medium = OOMedia::getMediaByFileName('$gesamtarray[$a]');
Wenn du is_object($Medium) mal danach mittels var_dump ausgeben lässt, wirst du hier immer false zurückbekommen, es sei denn, es gibt eine Datei mit dem Namen "$gesamtarray[$a]".

Entferne also die einfachen Anführungszeichen und greif über die Methode getFileName() auf den Namen zu:

Code: Alles auswählen

$gesamtarray[$a]->getFileName()
Der gesamte Code kann übrigens verkürzt und verbessert werden:

Code: Alles auswählen

<?php
$mediacatId = 1;
$mediaCat = OOMediaCategory::getCategoryById($mediacatId);
$mediaFiles = $mediaCat->getFiles();
shuffle($mediaFiles);

foreach($mediaFiles as $medium)
{
   printf('<img src="/files/%s" alt="%s" />', urlencode($medium->getFileName()), htmlspecialchars($medium->getDescription()));
}
?>
Zuletzt geändert von Xong am 15. Nov 2009, 09:29, insgesamt 1-mal geändert.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

15. Nov 2009, 09:26

Xong hat geschrieben:Entferne also die einfachen Anführungszeichen.
Das hatte ich glatt übersehen. Sollte wohl noch einen Kaffee trinken um wach zu werden :)

vg Thomas

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

15. Nov 2009, 09:30

Thomas.Blum hat geschrieben:Das hatte ich glatt übersehen. Sollte wohl noch einen Kaffee trinken um wach zu werden :)
Ich habe die Edit aber auch nochmal ranlassen müssen. =)
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Zurück zu „Allgemeines [R4]“