Я нашел решение косвенно в документе.
Атрибут priority
маршрута позволяет вам назначить порядок, в котором он будет определяться (и, следовательно, запрашиваться).
Чтобы отключить вызов действий на существующих контроллерах, можно определить общий маршрут в последней позиции, возвращая ошибку 404.
namespace controllers;
use Ubiquity\utils\http\UResponse;
class FooController extends ControllerBase
{
...
/**
* @route("{url}","priority"=>-1000)
*/
public function route404($url)
{
UResponse::setResponseCode(404);
echo "Page {$url} not found!";
}
}
Если мы все еще хотим активировать некоторые контроллеры (часть Adminнапример), мы должны добавить атрибут requirements
, который позволяет указать регулярное выражение.
namespace controllers;
use Ubiquity\utils\http\UResponse;
class FooController extends ControllerBase
{
...
/**
* @route("{url}","priority"=>-1000,"requirements"=>["url"=>"(?!(a|A)dmin).*?"])
*/
public function route404($url)
{
UResponse::setResponseCode(404);
echo "Page {$url} not found!";
}
}
В этом случае доступны только те маршруты, которые определены с аннотациями + те, которые соответствуют действиямAdmin
контроллер
С проблемами маршрутизации, решение по маршрутизации.