使用AltoRouter,我需要将任何以/customer
开头的请求传递到某个path/to/CustomerController.php
文件,然后在那里进行所有特定的匹配。
在CustomerController.php
中,我会匹配我的所有方法,即:
public static function Transfer(){... this will be invoked from /customer/transfer...
public static function Register(){... this will be invoked from /customer/register...
在Laravel中,您可以使用
Route::controller("customer", 'CustomerController');
我需要完全相同的东西,但使用AltoRouter。我找不到任何方法来做
http://altorouter.com/
(我只是不想让一个只处理我网站上所有控制器方法的路由文件,而是让每个控制器处理它的所有特定路由方法)
我在文档中发现了以下代码片段,也许它对您有帮助:
// map users details page using controller#action string
$router->map( 'GET', '/users/[i:id]/', 'UserController#showDetails' );
如果这没有帮助,你可以看看我的路由器Sail。我构建它是为了让程序员能够以更面向对象的方式构建他们的API。
编辑
下面是一个如何使用Sail解决此问题的示例。
use SailSail;
use SailTree;
use SailExceptionsNoSuchRouteException;
use SailExceptionsNoMiddlewareException;
use SailExceptionsNoCallableException;
require '../vendor/autoload.php';
$sail = new Sail();
class UserController extends Tree {
public function build () {
$this->get('transfer', function($request, $response) {
self::transfer($request, $response);
});
$this->get('register', function($request, $response) {
self::register($request, $response);
});
}
public static function transfer(&$request, &$response) {
//do your stuff
}
public static function register(&$request, &$response) {
//do your stuff
}
}
$sail->tree('customer', new UserController());
try {
$sail->run();
} catch (NoSuchRouteException $e) {
echo $e->getMessage();
} catch (NoMiddlewareException $e) {
echo $e->getMessage();
} catch (NoCallableException $e) {
echo $e->getMessage();
}