start to implement action matcher

This commit is contained in:
Manuel Raynaud
2013-02-05 18:19:47 +01:00
parent ec35cf998e
commit bb86533f25
4 changed files with 95 additions and 5 deletions

View File

@@ -58,8 +58,11 @@ class TheliaBundle extends Bundle
$container->register('matcher.default','Thelia\Routing\Matcher\DefaultMatcher')
->addArgument(new Reference('controller.default'));
$container->register('matcher','Thelia\Routing\Matcher\TheliaMatcherCollection')
$container->register('matcher.action', 'Thelia\Routing\Matcher\ActionMatcher');
$container->register('matcher','Thelia\Routing\TheliaMatcherCollection')
->addMethodCall('add', array(new Reference('matcher.default'), -255))
->addMethodCall('add', array(new Reference('matcher.action'), -200))
//->addMethodCall('add','a matcher class (instance or class name)
;
@@ -73,7 +76,7 @@ class TheliaBundle extends Bundle
* RouterListener implements EventSubscriberInterface and listen for kernel.request event
*/
$container->register('listener.router', 'Symfony\Component\HttpKernel\EventListener\RouterListener')
->setArguments(array(new Reference('matcher')))
->addArgument(new Reference('matcher'))
;
/**

View File

@@ -0,0 +1,47 @@
<?php
/*************************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/*************************************************************************************/
namespace Thelia\Routing\Matcher;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
class ActionMatcher implements RequestMatcherInterface
{
public function matchRequest(Request $request)
{
if (false !== $action = $request->get("action")) {
//search corresponding action
}
throw new ResourceNotFoundException("No action parameter found");
}
protected function findActionParam(Request $request)
{
}
}

View File

@@ -1,5 +1,25 @@
<?php
/*************************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/*************************************************************************************/
namespace Thelia\Routing\Matcher;
use Symfony\Component\HttpFoundation\Request;

View File

@@ -1,6 +1,26 @@
<?php
namespace Thelia\Routing\Matcher;
/*************************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/*************************************************************************************/
namespace Thelia\Routing;
use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;