2015-04-03 5 views
0

с целью перехода на cakephp 3 и овладения навыками создания приложений на этой версии фреймворка, я просто испек приложение и плагин.CakePHP 3: плагин администратора и маршрутизация

Я хочу, чтобы отделить веб-приложение в плагинах, администраторы, клиенты и т.д.

Я в порядке доступа к ячейкам в плагине, например MyApp/администратора/пользователей, MyApp/администратор /, но если Я пытаюсь посетить url myapp/admin (без косой черты в конце). Мне нужно перенаправить местоположение myapp/webroot/admin /.

in myapp/webroot/У меня есть папка с темами, называемая admin, я пытался изменить имя в admintheme, но все же имею перенаправление.

Как это решить?

Thank you.

+0

Вы можете показать свой файл routes.php? –

+0

В настоящее время ничего нет в route.php, кроме как по умолчанию. Я попытался добавить, ('' '$ routes-> connect ('/ admin', ['plugin' => 'admin', 'controller' => 'Pages', 'action' => 'display', 'home ']); '' '), но это не сработало. Мой плагин admin также имеет свой route.php – Salines

ответ

7

Это работает с CakePHP 3.1.2

Шаг 1: Установите маршруты для admin приставки выше вашего нормального /

// code ... 

// for prefix admin 
Router::prefix('admin', function ($routes) { 
    // All routes here will be prefixed with `/admin` 
    // And have the prefix => admin route element added. 
    $routes->fallbacks('InflectedRoute'); 
}); 

// for the non-prefix routes 
Router::scope('/', function ($routes) { 
// more code ... 

Шаг 2: Создайте папку с именем администратор внутри папки Controllers

Сбросьте соответствующий контроллер.

Controller 
    | 
    |------Admin 
    |  | 
    |  |----- AppController.php 
    |  |---- ProductsController.php // this handles all the admin actions 
    |   
    |----- ProductsController.php // this handles the non-prefix actions   

Шаг 3: Убедитесь, что все контроллеры внутри папки администратора использовать пространство имен namespace App\Controller\Admin;

Шаг 4: Сделайте все контроллеры в папке администратора продлить AppController внутри папку администратора

Шаг 5: Добавьте это в свой файл beforeFilter для App/Controller/Admin/AppController

public function beforeFilter(Event $event) 
    { 
     $this->viewBuilder()->theme('AppUI'); // AppUI is my plugin name 
     $this->viewBuilder()->layout('AppUI.backend'); 
    } 

Почему это работает?

Потому что тема теперь должна быть плагином. См http://book.cakephp.org/3.0/en/views/themes.html#themes

И я цитирую

темы в CakePHP просто плагины, которые сосредоточены на предоставлении шаблону файлов.

Как это:

plugins 
    | 
    |------AppUI 
    |  | 
    |  |----- src 
      |  | 
      |  |---- Template 
         |  |---- Layout 
           |  |---- backend.ctp 
Смежные вопросы