cakephp3-bootstrap-helpers
                                
                                 cakephp3-bootstrap-helpers copied to clipboard
                                
                                    cakephp3-bootstrap-helpers copied to clipboard
                            
                            
                            
                        UrlComparerTrait : route not found when menu is get only and submit a form
This is a (multiple allowed):
- 
[x] bug 
- 
[ ] enhancement 
- 
[ ] question 
- 
CakePHP Version: 3.8.0 
- 
Plugin Version/Branch: holt59/cakephp3-bootstrap-helpers dev-4.0.1-alpha 00ba937 
What you did
if ($this->Navbar->compareUrls(['_name' => 'route.name'])) {
    // code
}
What happened
Thrown a route not found exception
What you expected to happen
find the route ;)
explanation
my route is a get only :
$routes->get('/queue', ['controller' => 'Emails', 'action' => 'queue'], 'route.name');
and is in the "top menu"
When i submit a form (POST, PATCH, PUT), the UrlComparerTrait create a Request with normalized url :
$url = Router::parseRequest(new ServerRequest($this->_removeRelative($url)));
But this request construction use the current environment and set the method to POST.
The route.name with POST method don't exists.
I'm not sure about this, but this PR fix my problem ;)
To clarify a bit, the issue occurs when you have an URL that can be respond to both GET and POST request, and you have a GET "version" in the navigation bar?
The issue occur when you have a GET only route, used in navbar, but you do a POST or PUT on form with error (no redirect).
The request is POST and the navbar route only exist in GET, this thrown a Route Not Found
As i said in PR, maybe we can check and compare only route who match the current method