Naps: MVC "Globale" Funktionen

Hi,

ich hätte da wieder eine Frage zu der ich ein paar Lösungsansätze bräuchte...

Wie macht man es am besten wenn man von allen Controllern auf eine bestimmte Funktion zugreifen will?
Typisches beispiel um zu checken ob der User eingeloggt ist? In diesem Fall hab ich schon öfter gesehen, dass einfach eine statische Funktion verwendet wird.

Aber was ist, wenn diese Funktion auch auf bestimmtes Model zugreifen muss?

MfG Naps

  1. Tach!

    Wie macht man es am besten wenn man von allen Controllern auf eine bestimmte Funktion zugreifen will?

    MVC zu verwenden bedeutet nicht, dass du nur noch dieses Muster bedienen darfst und nichts anderes mehr. Wenn du eine Klasse oder sonstwas für eine bestimmte Aufgabe brauchst, dann erstell dir diese(s).

    Typisches beispiel um zu checken ob der User eingeloggt ist? In diesem Fall hab ich schon öfter gesehen, dass einfach eine statische Funktion verwendet wird. Aber was ist, wenn diese Funktion auch auf bestimmtes Model zugreifen muss?

    Dann muss sie das tun. Am besten ist es dabei, um zu große Abhängigkeiten zu vermeiden, diese benötigten Teile als Parameter zu übergeben.

    dedlfix.

  2. Hallo,

    Wie macht man es am besten wenn man von allen Controllern auf eine bestimmte Funktion zugreifen will?
    Typisches beispiel um zu checken ob der User eingeloggt ist? In diesem Fall hab ich schon öfter gesehen, dass einfach eine statische Funktion verwendet wird.

    Authentication sollte ein von Controllern getrennte Klasse bzw. ein Dienst sein. Was nicht heißt, dass in Controllern nicht einfach auf den User zugegriffen werden kann. Einige Authentication-Lösungen bieten dazu Controller-Instanzmethoden wie currentUser und loggedIn an, die dann mit dem Authentication-Dienst sprechen.

    Aber was ist, wenn diese Funktion auch auf bestimmtes Model zugreifen muss?

    Wie dedlfix sage: die stressfreieste Lösung ist, es zu übergeben. Wenn sowohl dieses Model als auch der User-Authentication-Dienst im Kontext der Instanz liegen, kann man einfach eine kleine Methode schreiben, die beide zusammenbringt.

    Um welches Model handelt es sich denn?

    Fürs Archiv, der Kontext dieser Diskussion:
    https://forum.selfhtml.org/?t=217169&m=1491064

    Mathias

    1. Um welches Model handelt es sich denn?

      Wie meinst du das genau?

      MfG Naps

  3. Aber was ist, wenn diese Funktion auch auf bestimmtes Model zugreifen muss?

    MVC: Die Funktion ist eine Methode, alle Eigenschaften des Models stehen der Methode zur Verfügung.

  4. hi,

    Hi,

    ich hätte da wieder eine Frage zu der ich ein paar Lösungsansätze bräuchte...

    Wie macht man es am besten wenn man von allen Controllern auf eine bestimmte Funktion zugreifen will?
    Typisches beispiel um zu checken ob der User eingeloggt ist? In diesem Fall hab ich schon öfter gesehen, dass einfach eine statische Funktion verwendet wird.

    Eigene Klasse? http://framework.zend.com/manual/2.0/en/modules/zend.authentication.intro.html

    mfg

    tami

  5. Hi,

    Aber was ist, wenn diese Funktion auch auf bestimmtes Model zugreifen muss?

    Möglicherweise suchst Du auch sowas: Multiple Models in MVC View

    D.h., zwischen Models gibt es Abhängigkeiten, ich bin gerade dabei, aufzuschreiben, wie das mein Framework regelt.

    PS: Die Login-Daten selbst sind nicht persistent. Diese auf ein Model abzubilden, würde bedeuten, dass eine Policy über den gesamten Code geschleift wird, was möglicherweise viel Code-Redundanzen mit sich bringt.

    Alternative: Eine Policy wird vom MVC getrennt und die Berechtigungen werden vorher geprüft, noch bevor überhaupt ein View erzeugt wird.

    1. Möglicherweise suchst Du auch sowas: Multiple Models in MVC View

      Danke, schau ich mir mal genauer an.

      MfG Naps