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
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'),
null, true);
// 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'),
null, true);
// 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.
Lesezeichen