Tell me if i'm wrong but i thought that Router::parse was the inverse of
Router::url.
In other words, I thought that $url == Router::url(Router::parse($url))would
always be true.
Just found out this was not the case.
If $url = "/users/view/123" then Router::url(Router::parse($url)) =
"/users/view?pass%5B0%5D=123"
This leads to the following bug in my App:
// In UsersController
function login()
{
if ($this->request->is('post')) {
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
$url = $this->Auth->redirectUrl(); // let's say redirect url is
"/en/users/view/123"
$url = Router::parse($url); // now url is ['controller' =>
'users', 'action' => 'view', 'locale' => 'en', 'pass' => ['123']]
$url['locale'] = $user['locale']; // my user is french
$url = Router::url($url); // now url is
"/fr/users/view?pass%5B0%5D=123"
instead of "/fr/users/view/123"
return $this->redirect($url);
}
}
}
--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.