[PHP][ZF] Default action en parameter

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50
Ik heb het nu voor elkaar gegevens op te halen via:

http://url.com/website/index/id/1

http://url.com/website en http://url.com/website/index werken ook. Maar eigenlijk wil ik dat het bereikbaar wordt via http://url.com/website/www.website.nl/ of http://url.com/website/1/. Ik heb uit de documentatie begrepen dat ik dan __call($method, $args) moet gebruiken, en dan redirecten naar bijvoorbeeld index als het lijkt op een URL, bijvoorbeeld http://url.com/website/www.voorbeeld.nl/

Ik heb de __call functie zo ingesteld dat hij altijd forwardt naar index, dus alleen als er specifiek een action opgegeven wordt doet hij wat anders als dit.

PHP:
1
2
3
4
5
    public function __call($method, $arguments) {
        var_dump($method);
        var_dump($arguments);
        return $this->_forward('index');
    }


Ik ziet nu staan:
PHP:
1
string(20) "wwwVoorbeeldNlAction" array(0) { }

verschijnen, terwijl ik dus iets verwachtte in de trant van:
PHP:
1
string(20) "www.voorbeeld.nl" array(0) { }


Ik kan natuurlijk wel weer action er af slopen en kijken waar ik in plaats van een hoofdletter punt kleine letter kan neerzetten, maar dat lijkt me toch echt niet de nette methode om dit op te lossen. Is hier een betere / nettere / makkelijkere methode voor?

iOS developer


Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50
Ik zit nu op mijn werk, dus ik kan er niet meteen mee aan de slag, maar klopt het dat ik het hier mee kan aanpassen tot wat ik wil?

http://framework.zend.com...nd.controller.router.html

iOS developer


Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
Ja.. geen __call gebruiken, je kunt dan beter een custom route schrijven die
/website/:parameter afvangt en dan kun je in je indexAction wel checken of het een string of integer is ofzo.


Je kunt altijd even op irc.freenode.net #zftalk komen, daar hang ik meestal wel rond, maar ook genoeg andere mensen die je graag willen helpen.

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50
OK, ik ga vanavond eens kijken hoe ver ik kom :)

iOS developer


Acties:
  • 0 Henk 'm!

  • kokx
  • Registratie: Augustus 2006
  • Laatst online: 13-09 20:30

kokx

WIN

Om eerst even te vertellen hoe het komt dat die method naam zo 'raar' is. Dat komt omdat alle functies in het Zend Framework camelCased zijn. En natuurlijk wordt de functie aanroep voor een action ook camelCased gemaakt.

Om dat goed te doen moet je (zoals OxiMoron zei) een nieuwe route maken (zie daarvoor de Zend_Controller documentatie) en ook een nieuwe actie maken. Als je dan deze route naar die nieuwe actie laat gaan, kun je die parameter verkrijgen met $this->getRequest()->getParam('parameterNaam');.

En net als (Mr)OxiMoron nodig ik je uit in irc.freenode.net#zftalk ;).

Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50
Ik heb gisteren te weinig tijd gehad om het goed te testen of op IRC te komen, maar waar plaats ik nu die nieuwe Route? Naar mijn idee moet het in WebsiteController onder de functie __call aan $this gehangen worden, maar op het moment dat ik dat doe *crasht* Apache (XAMPP) :|

iOS developer


Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50
OK je haalt gewoon een instance op van de Front Controller, dus ik kan het beste die routes initialiseren in de bootstrap index.php. Vanavond weer aan de slag :)

iOS developer


Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50
Het werkt! :)

iOS developer

Pagina: 1