2015-03-25 2 views
0

Я пытаюсь настроить префикс маршрутизации в cakephp 3, поэтому любые URL-адреса, начинающиеся с/json/получают префиксный набор ключей, и я могу соответствующим образом изменить макет в контроллере приложения. Помимо этого, они должны использовать обычный контроллер и действие. Я добавил следующее routes.phpcakephp 3 prefix routing

$routes->prefix('json', function($routes) { 
    $routes->connect(
     '/:controller/:action/*', 
     [], 
     ['routeClass' => 'InflectedRoute'] 
    ); 
}); 

Я хочу, чтобы все запросы с JSON в качестве первого сегмента URL-адреса в контроллер, указанных во втором сегменте URL. например/json/users/add_account_type/переходит к пользовательскому контроллеру. Однако при доступе к этому URL я получаю сообщение:

Error: Create the class UsersController below in file: src/Controller/Json/UsersController.php

, тогда как я хочу его использовать

src/Controller/UsersController.php

Я думаю, что это должно быть возможно, но я не могу достаточно увидеть, что я делаю неправильно при консультировании с книгой. Были частично основан мой код на: CakePHP3.x controller name in url when using prefix routing

Большое спасибо заранее

ответ

0

Это просто как префикс маршрутизации теперь работает в 3.x, как описано в документации, префиксы сопоставляемого subnamespaces, и, таким образом, чтобы отделить контроллеров в подпапках.

http://book.cakephp.org/3.0/en/development/routing.html#prefix-routing

Если вы хотите изменить это поведение (я действительно не понимаю, почему), один из способов будут реализовать собственный ControllerFactory диспетчерского фильтра.

http://book.cakephp.org/3.0/en/development/dispatch-filters.html

На боковой ноте RequestHandler компонент поддерживает макет/шаблон переключения из коробки, так что, может быть, вы должны дать что попробовать.

+0

Спасибо, что указал мне в правильном направлении. Похоже, что функция RequestHandler - это именно то, что мне нужно. – TimSpEdge

0

Префикс маршрутизации является способом пространства имен частей ваших маршрутов на выделенный контроллер. Кажется, что вы хотите использовать масштаб, а не префикс, для описания:

Router::scope('/json', function($routes) { 
    $routes->fallbacks('InfledtedRoute') 
}); 
+0

Это работало, чтобы направлять мой запрос в нужное место, но в моем AppController я не мог понять, как определить, в какой области я был, и соответственно изменить макет. – TimSpEdge

+0

Макет? Почему вы не используете автоматические просмотры Json? http://book.cakephp.org/3.0/en/views/json-and-xml-views.html –

 Смежные вопросы

  • Нет связанных вопросов^_^