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/

(Я просто не хочу, чтобы один файл маршрутов обрабатывал все методы контроллеров на моем сайте, но каждый контроллер должен обрабатывать все методы своего конкретного маршрута)

1

Решение

Я нашел следующий фрагмент кода в документации, может быть, это поможет вам:

// map users details page using controller#action string
$router->map( 'GET', '/users/[i:id]/', 'UserController#showDetails' );

Если это не поможет, вы можете проверить мой роутер Паруса. Я создаю его, чтобы позволить программистам более объектно-ориентированный способ создания своих API.

редактировать

Вот пример, как вы можете решить это с помощью Sail.

use Sail\Sail;
use Sail\Tree;
use Sail\Exceptions\NoSuchRouteException;
use Sail\Exceptions\NoMiddlewareException;
use Sail\Exceptions\NoCallableException;

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

Другие решения

Других решений пока нет …