Open viniciusbig opened 6 years ago
So, I'm running more tests here and there are more details I can add here:
I have this route
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'dashboard']);
so my mysite.dev/
is conected to my dashboard page
And I have added this link in my Navbar
$this->Navbar->link('Dashboard', ['controller' => 'Pages', 'action' => 'display', 'dashboard'])
When opening another page, ie: mysite.dev/about
the compareUrls() will compare '/'
(my dashboard page) with the current page '/about'
Then, the normalize() will come up with the wrong structure for the '/'
url.
'pass' => [
(int) 0 => 'about'
],
'controller' => 'Pages',
'action' => 'display',
'plugin' => null,
'_matchedRoute' => '/pages/*'
Note the pass parameter wrong. It should be dashboard and not the current page about.
I think the line
$url = Router::parseRequest(new ServerRequest($this->_removeRelative($url)));
is not parsing the root route right.
If I remove the route in my routes.php
this thing doesn't happen and the normalized version for it is:
'pass' => [
(int) 0 => 'dashboard'
],
'controller' => 'Pages',
'action' => 'display',
'plugin' => null,
'_matchedRoute' => '/pages/*'
Check the pass parameter changing.
This is a (multiple allowed):
[x] bug
[ ] enhancement
[x] question
CakePHP Version: 3.5.14
Plugin Version/Branch: COMPOSER REQUIREMENTS (e.g.
dev-master
,dev-4.0.1-alpha
,3.1.*
).What you did
I have a route attached to a page called 'dashboard'
So, using the Navbar help I've created a link like this:
And the generated link is '/' since its routed that way.
In another page, '/home', (pages/display/home) the link '/' is marked as 'active' and this is wrong.
How can I check the current page properly?
What happened
I got the root page active even on another page. Normalize functions seems not work properly when the URL is attached to '/' route.
What you expected to happen
Normalize should check the URL in routes and consider it.