PHP AltoRouter将路由完全传递给控制器



使用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();
}

相关内容

  • 没有找到相关文章

最新更新