С 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. Я не могу найти способ сделать это
(Я просто не хочу, чтобы один файл маршрутов обрабатывал все методы контроллеров на моем сайте, но каждый контроллер должен обрабатывать все методы своего конкретного маршрута)
Я нашел следующий фрагмент кода в документации, может быть, это поможет вам:
// 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();
}
Других решений пока нет …