[Frage] Ist das so sinvoll, oder gibt es eine Bessere Altiernative? f:image überschreiben

  • 0 x
    97 Beiträge
    3 Hilfreiche Beiträge
    16. 10. 2017, 15:26

    Hallo,
    Ich will eine Nutzerliste generieren, bestehend aus Profilbild, und darunter der Username.
    Die Liste wird inzwischen auch generiert, so wie ich mir das vorgestellt habe.
    Allerdings habe ich hierfür den Viewhelper Image anpassen müssen.
    Folgendes Problem:
    Ein Nutzer hat entweder ein Profilbild hinterlegt, oder eben nicht.
    Wenn er eins hat -> Anzeigen.
    Wenn er keins hat -> defaultBild Anzeigen.
    Da leider der Viewhelper Image kein onerror unterstützt, habe ich es über additionalAttributes Versucht.
    Leider hat der onerror nicht gegriffen. Es kam nur der "alt" Text.
    Nun habe ich den ImageViewHelper in meine Extension kopiert, und dort ein onerror hinzugefügt, um nicht ständig über additionalAttributes gehen zu müssen.
    Ganz unten in der Datei fiel mir folgender Code auf:

    1. } catch (ResourceDoesNotExistException $e) {
    2. // thrown if file does not exist
    3. } catch (\UnexpectedValueException $e) {
    4. // thrown if a file has been replaced with a folder
    5. } catch (\RuntimeException $e) {
    6. // RuntimeException thrown if a file is outside of a storage
    7. } catch (\InvalidArgumentException $e) {
    8. // thrown if file storage does not exist
    9. }

    Ich gehe mal davon aus, dass hier der onerror bereits abgefangen wird, bevor er überhaupt auslösen kann.
    Habe nur folgendes gemacht:
    1. } catch (ResourceDoesNotExistException $e) {
    2. // thrown if file does not exist
    3. $this->tag->addAttribute('src', '');
    4. } catch (\UnexpectedValueException $e) {
    5. // thrown if a file has been replaced with a folder
    6. $this->tag->addAttribute('src', '');
    7. } catch (\RuntimeException $e) {
    8. // RuntimeException thrown if a file is outside of a storage
    9. $this->tag->addAttribute('src', '');
    10. } catch (\InvalidArgumentException $e) {
    11. // thrown if file storage does not exist
    12. $this->tag->addAttribute('src', '');
    13. }

    Sodass nun wieder ein nicht existentes src gesetzt wird. Der onerror löst nun aus, und das default Image wird gesetzt
    Dies kann doch aber nicht Sinn der Sache sein. Ich glaube ich stehe mal wieder den Wald vor lauter Bäumen nicht, und finde die hier angebrachte einfache Lösung nicht.

    Der onerror Schnipsel:

    1. onerror="this.onerror=null;this.src='fileadmin/Image/defaultUser.gif';"

    Schon mal Danke für Anregungen. Glaube ich mache es mir Komplizierter als es ist.
    Mfg
    Power-Poler


  • 1
  • Norman2k Norman2k
    Jedi-General
    0 x
    1655 Beiträge
    78 Hilfreiche Beiträge
    16. 10. 2017, 17:21

    Sobald ich in so eine Situation wie du komme, verwende ich DCE oder Mask.

  • Teisinger Teisinger
    Jedi-Meister
    0 x
    389 Beiträge
    27 Hilfreiche Beiträge
    16. 10. 2017, 20:59

    sau dumme frage:
    wenn du schon fluid nutzt, wieso dann nicht richtig? :D
    dafür gibts doch z. B. ein IF viewhelper? (mit if than else sollte das doch gehen)

    Kannst dir ja von der ext News abgucken :)

    Du kannst dir auch mal die ext tt_address angucken - ist für ne userliste denke ich super geeignet :) (wird gerade auf Fluid umgebaut, einfach mal auf github vorbei gucken <- issues)

    https://github.com/groundstack-org

  • 0 x
    97 Beiträge
    3 Hilfreiche Beiträge
    17. 10. 2017, 08:43

    Danke. Mit If hat es funktioniert :D
    Hatte wahrscheinlich nur Angst, dass das mit dem Verschachteln wieder schiefgeht, und gar nicht daran gedacht

  • 1