Я хотел бы создать плагин для CakePHP 3.1.4. Документация проста, но пример не работает (http://book.cakephp.org/3.0/en/plugins.html#creating-your-own-plugins)
Шаги:
composer create-project --prefer-dist cakephp/app sampleapp
Создайте базу данных. Подключиться к базе данных. Создайте таблицу «Контакты». Перейдите в каталог и запустите:
bin/cake bake plugin ContactManager
Создайте контроллер:
bin/cake bake controller --plugin ContactManager Contacts
Повторно сгенерируйте автозагрузчик:
composer dumpautoload
Добавьте эту строку в файл /config/bootstrap.php:
Plugin::load('ContactManager', ['routes' => true]);
Но теперь документация говорит
«Если вы хотите получить доступ к тому, что у нас есть, посетите /contact-manager/contacts. Вы должны получить сообщение об ошибке «Отсутствует модель», потому что у нас еще не определена модель контакта».
Но это не работает. Вместо этого я получаю сообщение об ошибке:
Отсутствует контроллер. Cake\Routing\Exception\MissingControllerException. Cake\Routing\Dispatcher->dispatch ROOT/webroot/index.php, строка 37 Ошибка: не удалось найти ContactManagerController. Ошибка: Создайте класс ContactManagerController ниже в файле: src/Controller/ContactManagerController.php
Это означает, что плагин не может быть загружен, иначе он не предложит это. При открытии DebugKit в разделе «Включить» плагин отсутствует в массиве плагинов.
Я проверил файлы composer.json, и в обоих плагин указан правильно. Команда испечь прошла без ошибок. Я попробовал описанные выше шаги с несколькими новыми проектами с разными именами.
В чем проблема? Большое Вам спасибо.
plugins/ContactManager/config/routes.php
, как сказано в руководстве? - person ADmad   schedule 24.11.2015Router::connect('/contactmanager/contacts/view/*',['plugin' => 'ContactManager', 'controller' => 'Contacts', 'action' => 'view']);
Но это должно работать без добавления каждого маршрута для каждого действия вручную, верно? - person ST2OD   schedule 25.11.2015