Другие комментарии здесь верны, в AppFontroller beforeFilter проверяет провайдера по отношению к провайдерам в вашей БД.
Однако, если все URL-адреса должны иметь префикс строки поставщика, вы собираетесь извлечь его из URL-адреса неправильно, посмотрев в $ this-> params ['url'].
Эта проблема - именно то, для чего предназначен класс маршрутизатора, и его способность передавать параметры в действие. Проверьте страницу руководства в кулинарной книге http://book.cakephp.org/view/46/Routes-Configuration. Вы можете попробовать что-то вроде:
Router::connect('/:provider/:controller/:action');
Вы также увидите в руководстве возможность проверять параметр поставщика в самом маршруте с помощью регулярного выражения - если у вас небольшой определенный список известных поставщиков, вы можете жестко закодировать их в регулярном выражении маршрута.
При настройке маршрута, который захватывает эту часть URL, он мгновенно становится доступным в $ this-> params ['provider'], но даже лучше, чем тот факт, что метод html helper link () автоматически создается правильно отформатированные URL, например
$html->link('label', array(
'controller' => 'xxx',
'action' => 'yyy',
'provider' => 'zzz'
));
Возвращает ссылку типа / zzz / xxx / yyy