Ergebnis 1 bis 14 von 14

Thema: Url Helper

  1. #1
    Benutzer
    Registriert seit
    14.05.2009
    Beiträge
    59
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard Url Helper

    Hallo,
    meine Links mach ich mit dem URL-Helper,
    aber sobald ich zusätzliche Parameter oder Actions an die momentane URL anhänge,
    werden diese auch an die per URL-Helper erzeugten Links angehängt.
    Wie kann ich das verhindern und wirklich nur der Controllername in der URL steht?

  2. Aktuelles Zend Framework Stellenangebot


    Webprogrammierer(in)
    von ZAPITANO GmbH

    Details ansehen
  3. #2
    Erfahrener Benutzer
    Registriert seit
    18.02.2008
    Ort
    Leipzig
    Beiträge
    533
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Poste doch mal Beispiel-Code durch den du einen Link erhälst, den du so nicht haben möchtest. Also was möchtest du erreichen und mit welchen Code versuchst du das umzusetzen?

  4. #3
    Erfahrener Benutzer
    Registriert seit
    22.04.2009
    Beiträge
    103
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Moin!


    Ein Beispiel-Code wär immer interessant =) Ich versuch dir mal zu antworten mit den Infos die du bis jetzt gegeben hast

    Die Parameter (Id, PostID, etc) muss ja angezeigt werden. Wie soll das aufgerufenen Script denn sonst wissen was du willst? Das einzige was du machen könntest (was aber eigentlich keinen Sinn ergibt), ist für die jeweiligen Dinge eine eigene Route zu schreiben (Ich rate davon dringend ab!).

    Wenn du /controller aufrufst, rufst du den Controller und die indexAction auf.

    Wenn du aber /controller/action/id/3 aufrufst, weiss er dass er was mit der id -> 5 anstellen soll. Zend_Glaskugel is glaub ich noch auf "work in progress" status

  5. #4
    Benutzer
    Registriert seit
    14.05.2009
    Beiträge
    59
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    PHP-Code:
    <a href="<?php echo $this->url(array('controller' => 'hilfe''action' => '')); ?>">Link</a>

  6. #5
    Erfahrener Benutzer
    Registriert seit
    22.04.2009
    Beiträge
    103
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von ZendNeuling Beitrag anzeigen
    PHP-Code:
    <a href="<?php echo $this->url(array('controller' => 'hilfe''action' => '')); ?>">Link</a>
    Ja, schaut gut aus.....

  7. #6
    Benutzer
    Registriert seit
    14.05.2009
    Beiträge
    59
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von codejumper Beitrag anzeigen
    Ja, schaut gut aus.....

    So sieht das z.B. gerade aus wie oben geschrieben...


    Edit:
    Beispiel Url:
    www.domain.de/index/index/param/test/paramtwo/foobar

    Der Link sieht dann so aus:
    www.domain.de/hilfe//param/test/paramtwo/foobar
    Geändert von ZendNeuling (25.06.2009 um 19:44 Uhr)

  8. #7
    Erfahrener Benutzer
    Registriert seit
    18.02.2008
    Ort
    Leipzig
    Beiträge
    533
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    PHP-Code:
    echo $this->url(array('controller' => 'hilfe''action' => 'index'), 'default'); 
    So würde ich den Link auf /hilfe erzeugen

  9. #8
    Benutzer
    Registriert seit
    14.05.2009
    Beiträge
    59
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Danke Meisii, genau so funktioniert es !

  10. #9
    Erfahrener Benutzer
    Registriert seit
    22.04.2009
    Beiträge
    103
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von ZendNeuling Beitrag anzeigen

    So sieht das z.B. gerade aus wie oben geschrieben...


    Edit:
    Beispiel Url:
    www.domain.de/index/index/param/test/paramtwo/foobar

    Der Link sieht dann so aus:
    www.domain.de/hilfe//param/test/paramtwo/foobar

    aaahhh =) Damit kann man dann auch was anfangen

  11. #10
    Erfahrener Benutzer
    Registriert seit
    18.02.2008
    Ort
    Leipzig
    Beiträge
    533
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Schön, wenn ich helfen konnte. Die Defaultroute braucht die Controller- und Actionangabe. Der Name der Route, hier 'default' sollte immer mit angegeben werden.

    angenommen du hast eine Route Namens 'pageEdit' nach diesem Schema:
    Code:
    /page/edit/:id
    dann kannst du den Link /page/edit/5 statt /page/edit/id/5 verwenden und den Link kannst du mit folgendem erzeugen:
    PHP-Code:
    echo $this->url(array('id' => '5'), 'pageEdit'); // erzeugt /page/edit/5 

  12. #11
    Erfahrener Benutzer Avatar von Pwner
    Registriert seit
    05.11.2007
    Beiträge
    560
    Thanks
    0
    Thanked 5 Times in 5 Posts

    Standard

    Statt dem 'default' mache ich immer ein null dran und ans ende kommt noch ein true. Das erzielt auch den gewünschten Effekt. Wobei ich nicht mehr genau weiß für was ich das true nehme (ist schon länger her mit dem url-helper)

    EDIT also in der API steht das:
    Code:
    string url ([ $urlOptions = array()], [mixed $name = null], [bool $reset = false], [ $encode = true])
    Ob ich 'default' nehme oder null ist glaube egal (hatte mal vor längerem im Source des helpers geschaut), mit dem true resette ich die url.

    Hm kann ich 'default' machen und mir stattdessen das true für reset sparen? Kann das jemand mal testen?
    Geändert von Pwner (25.06.2009 um 22:41 Uhr)

  13. #12
    Erfahrener Benutzer
    Registriert seit
    18.02.2008
    Ort
    Leipzig
    Beiträge
    533
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Hmm, sehr interessant. Ich hatte noch nie die Resetoption verwendet, wollte das aber mal testen und habe wieder einiges gelernt.

    Ich fasse zusammen:

    1. Szenario
    Ich befinde mich in einer 'pageEdit'-Route
    Code:
    /page/edit/:id
    Als Beispiel: /page/edit/3

    Nun möchte ich einen Link zu /index/index (also '/') mit der 'default'-Route
    PHP-Code:
    // 1. Variante
    echo $this->url(array('controller' => 'index''action' => 'index'),
        
    'default');
    // Ergebnis: '/'

    // 2. Variante
    echo $this->url(array('controller' => 'index''action' => 'index'),
        
    'default'true);
    // Ergebnis: '/'

    // 3. Variante
    echo $this->url(array('controller' => 'index''action' => 'index'),
        
    null);
    // Ergebnis: '/page/edit/3' -> komplett falsch, denn null bedeutet gleicher
    // Router ('pageEdit') und der ist auf controller = page und
    // action = edit definiert

    // 4. Variante
    echo $this->url(array('controller' => 'index''action' => 'index'),
        
    nulltrue);
    // Ergebnis: Seitenfehler, denn null bedeutet gleicher Router ('pageEdit')
    // der noch die 'id' bräuchte, die aber zurückgesetzt wurde 
    Variante 1 und 2 liefern das richtige Ergebnis, aber 1 ist kürzer.

    2. Szenario
    Ich befinde mich in der 'default'-Route und möchte innerhalb dieser einen anderen Link

    Als Beispiel: ich bin hier /user/edit/id/3 und will hier hin /index/index ('/')

    PHP-Code:
    // 1. Variante
    echo $this->url(array('controller' => 'index''action' => 'index'),
        
    'default');
    // Ergebnis: '/index/index/id/3'

    // 2. Variante
    echo $this->url(array('controller' => 'index''action' => 'index'),
        
    'default'true);
    // Ergebnis: '/'

    // 3. Variante
    echo $this->url(array('controller' => 'index''action' => 'index'),
        
    null);
    // Ergebnis: '/index/index/id/3'

    // 4. Variante
    echo $this->url(array('controller' => 'index''action' => 'index'),
        
    nulltrue);
    // Ergebnis: '/' 
    Variante 2 und 4 liefern das richtige Ergebnis, d. h. man kann(!) Route = null verwenden, da man in der gleichen Route bleibt, auf jeden Fall muss(!) man aber die Url mit reset = true zurücksetzen.

  14. #13
    Erfahrener Benutzer
    Registriert seit
    10.09.2007
    Ort
    Wuppertal
    Beiträge
    5.725
    Thanks
    1
    Thanked 39 Times in 39 Posts

    Standard

    Du solltest immer, wo du auf keinen Fall Parameter von anderen URLs haben willst, reset auf true setzen!
    Neues Projekt: zandman.de - Status: WIP




  15. #14
    Erfahrener Benutzer
    Registriert seit
    18.02.2008
    Ort
    Leipzig
    Beiträge
    533
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ich habe bisher für alle Urls mit Parameter eine eigene Route definiert, d. h. auch immer den Namen der Route angegeben. Daher hatte ich noch nie Probleme mit angehängten Parametern. Vielleicht sollte ich mir aber sicherheitshalber angewöhnen, trotzdem immer die Werte mit reset = true zurückzusetzen. Bin mir da noch nicht ganz schlüssig.

Ähnliche Themen

  1. Im Helper anderen Helper ausführen
    Von zfler im Forum Einsteigerfragen
    Antworten: 4
    Letzter Beitrag: 27.06.2008, 23:14

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •