Toon posts:

[ZF] Custom view helper vs. placeholder

Pagina: 1
Acties:

Onderwerpen


  • nika
  • Registratie: oktober 2003
  • Laatst online: 21-05 15:47
Misschien een triviale vraag, maar vanuit het oogpunt van ZF standards toch interessant/belangrijk.

Ik heb een pagina met een login button. Bij aanklikken verschijnt een form (jquery, laat form in predefined DIV segment zien). Een ingelogde gebruiker krijgt juist een logout button. Deze buttons zijn dus altijd aanwezig op de pagina en worden dus gerenderd in de layout.

Nu zie ik eigenlijk 2 manieren om dit te implementeren.

A. Een custom view helper die controleert of Zend_Auth::hasIdentity() resulteert in true en gebaseerd daarop enkele regels xhtml teruggeeft (respectievelijk voor inlog of uitlog).

Layout.phtml ziet er dan zo uit.

code:
1
2
3
4
5
6
7
<html>
<body>
<div> 
    <?php echo $this->authentication(); ?> <!-- roept Nika_View_Helper_Authentication aan -->
</div>
</body>
</html>


B. door gebruik te maken van een placeholder.

code:
1
2
3
4
5
6
7
<html>
<body>
<div> 
    <?php echo $this->placeholder('authentication'); ?>
</div>
</body>
</html>


Welke te kiezen?

  • mithras
  • Registratie: maart 2003
  • Niet online
Zelf kies ik altijd voor view helpers.

Placeholders vind ik maar "eng" in de zin dat ze redelijk onbepaald zijn (je kan de inhoud zó overschrijven) en makkelijk spagetti-code kunnen veroorzaken. Een juiste view helper zorgt voor wat meer consistentie in de applicatie.

offtopic:
Al zou ik wel iets aan je naamgeving veranderen om de view helper wat duidelijker te maken

[Voor 15% gewijzigd door mithras op 04-10-2010 15:21]


  • nika
  • Registratie: oktober 2003
  • Laatst online: 21-05 15:47
mithras schreef op maandag 04 oktober 2010 @ 15:20:
offtopic:
Al zou ik wel iets aan je naamgeving veranderen om de view helper wat duidelijker te maken
Zal ik zeker doen. Wordt waarschijnlijk iets als SignInOutContainer o.i.d.

Gerelateerde vraag. Hoe injecteer ik javascript vanuit viewhelpers?

code:
1
$this->view->headScript()->appendScript('...');


werkt niet. Logisch want headScript is al eerder in de view gerenderd. Maar dan?

  • mithras
  • Registratie: maart 2003
  • Niet online
Je kan de inlineScript view renderer gebruiken. Die staat bij mij nog boven </body> voor dit soort zaken.

  • iH8
  • Registratie: december 2001
  • Laatst online: 13-04-2019
Is me dat even toevallig De Supreme High Commander of Zend Framework heeft vandaag geblogged over deze materie.

http://weierophinney.net/...nt-Re-Usable-Widgets.html

Aunt bunny is coming to get me!


  • nika
  • Registratie: oktober 2003
  • Laatst online: 21-05 15:47
iH8 schreef op maandag 04 oktober 2010 @ 23:00:
Is me dat even toevallig De Supreme High Commander of Zend Framework heeft vandaag geblogged over deze materie.

http://weierophinney.net/...nt-Re-Usable-Widgets.html
He super dat je deze even post! Ik heb even gekeken. Matthew heeft weer een heel andere benadering. Hij gebruikt Action_Helpers die aanhaken op de preDispatch hook.

  • iH8
  • Registratie: december 2001
  • Laatst online: 13-04-2019
Graag gedaan hoor :) Is mijn inziens ook één van de betere methodes. De actionhelper gebruikt hasIdentity() en duwt gezien de uitkomst je login of out form in je $view->authForm. Je view rendert alleen maar $this->authForm en hoeft niet op de hoogte te zijn of dat het nu je login of out form betreft.

Bijkomend voordeel is dat met je actionhelper ook nog op tijd bent om het gewenste javascript (guest/user/admin/whatever.js) aan je view toe te voegen. Twee vliegen in één klap.

Ik doe het daarintegen weer anders. Ik ben zelf van mening dat iemand die niet geauthoriseerd is voor een bepaalde resource al geredirect/blocked moet worden tijdens het bootstrappen. Ik maak dan ook gebruik van een frontcontrollerplugin. Deze handelt ook het inserten van de juiste scripts/forms af. Drie vliegen in één klap. ;)

Of je nu een frontcontrollerplugin gebruikt of een actionhelper daar valt over te discussiëren maar ik persoonlijk vind de view opzadelen met die logica not done.

Aunt bunny is coming to get me!


  • mithras
  • Registratie: maart 2003
  • Niet online
iH8 schreef op dinsdag 05 oktober 2010 @ 16:44:
Ik doe het daarintegen weer anders. Ik ben zelf van mening dat iemand die niet geauthoriseerd is voor een bepaalde resource al geredirect/blocked moet worden tijdens het bootstrappen. Ik maak dan ook gebruik van een frontcontrollerplugin. Deze handelt ook het inserten van de juiste scripts/forms af. Drie vliegen in één klap. ;)
Frontcontroller plugins doen hun werk tijdens het runnen van de applicatie, niet tijdens het bootstrappen ;)

Verder heb jij het over toegang tot pagina's (actieve controle) terwijl TS met een presentatie issue bezig is (login of logout tonen in layout). Ik doe ACL ook in een frontcontroller plugin, maar view zaken zoals TS met een view helper.

  • iH8
  • Registratie: december 2001
  • Laatst online: 13-04-2019
mithras schreef op dinsdag 05 oktober 2010 @ 19:43:
[...]
Frontcontroller plugins doen hun werk tijdens het runnen van de applicatie, niet tijdens het bootstrappen ;)

Verder heb jij het over toegang tot pagina's (actieve controle) terwijl TS met een presentatie issue bezig is (login of logout tonen in layout). Ik doe ACL ook in een frontcontroller plugin, maar view zaken zoals TS met een view helper.
Ok :) Oopsie daisy! Dat wist ik. |:(

Als ik door middel van mijn Auth/ACL plugin al weet of dat een user wel of niet authorized is dan kan ik dan toch het correcte form meegeven? Ik zie helemaal niet in waarom dat je daar een viewhelper voor nodig zou hebben. Hij wil afhankelijk van de uitkomst bepaalde javascripts wel of niet includen. Hoe regel je dat vanuit een viewhelper? Ook nog maar een actionhelper erbij schrijven? ;)

offtopic:
Daarbij zou het een gebruik van een viewhelper voor mij betekenen dat ik in mijn view mijn modellen aan zou moeten spreken aangezien mijn form deel uit maakt van mijn model. Dat doe ik liever niet want die horen volgens mij niet thuis in mijn view.

Aunt bunny is coming to get me!


  • Freeaqingme
  • Registratie: april 2006
  • Laatst online: 20:01
Waarschijnlijk ga je dit even willen lezen. Vandaag gepubliceerd, en voor zover ik kan zien precies wat jij zoekt/bedoelt. Daarnaast is 't geschreven door de architect/supreme commander van ZF, dus qua kwaliteit zit 't wel redelijk in elkaar ;)

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


  • iH8
  • Registratie: december 2001
  • Laatst online: 13-04-2019
Freeaqingme schreef op dinsdag 05 oktober 2010 @ 20:42:
Waarschijnlijk ga je dit even willen lezen. Vandaag gepubliceerd, en voor zover ik kan zien precies wat jij zoekt/bedoelt. Daarnaast is 't geschreven door de architect/supreme commander van ZF, dus qua kwaliteit zit 't wel redelijk in elkaar ;)
ejjjjjjjj :o iH8 in "[ZF] Custom view helper vs. placeholder" :)

Aunt bunny is coming to get me!


  • nika
  • Registratie: oktober 2003
  • Laatst online: 21-05 15:47
iH8 schreef op dinsdag 05 oktober 2010 @ 20:40:
k zie helemaal niet in waarom dat je daar een viewhelper voor nodig zou hebben. Hij wil afhankelijk van de uitkomst bepaalde javascripts wel of niet includen. Hoe regel je dat vanuit een viewhelper? Ook nog maar een actionhelper erbij schrijven? ;)
Omdat ik in mijn Layout een DIV segment wil hebben dat verschillende functies rondom het in en uit loggen van gebruikers heb. Daarbij komt meer kijken dan alleen de form. De functionaliteit is vergelijkbaar met de login button van Twitter (main page, dus jquery appear box met de form erin). Voor uitlog is de functionaliteit compleet anders (bijv. dropdown menu erbij voor het benaderen van het profiel, zie bijv. bol.com na inlog).

Een hoop view, waarbij de enige bepalende factor is of iemand wel of niet ingelogd is. Dat lijkt me dus iets voor een view_helper

  • Freeaqingme
  • Registratie: april 2006
  • Laatst online: 20:01
offtopic:
Weet je misschien nog een leuk adresje voor een bril of blindegeleidehond? Ik begin duidelijk blind te worden... Sorry!

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


  • iH8
  • Registratie: december 2001
  • Laatst online: 13-04-2019
Ik kom zojuist dit tegen, zeker de moeite van het lezen waard: http://akrabat.com/zend-framework/a-form-in-your-layout/

Aunt bunny is coming to get me!

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee