Я обновляю свое приложение cakePHP с v3.1.1 до v3.1.2, и в этом отрывке все мои маршруты и имена файлов прервались.
с v3.1.1:
db_table = hotels_profiles (1to1 правильно называть его таким образом, если
у меня есть таблица «отелей»?)ModelTable = HotelsProfilesTable
Entity = HotelsProfile
Контроллер = HotelsProfilesController (для модели вызова $ this-> Hotelsprofiles)
url = / hotelsprofiles / action
Теперь с v3.1.2 мне нужно переименовать:
Контроллер Hotelsprofiles или измените мой URL на hotels_profiles.
В контроллере для модели вызова мне нужно переименовать
$ this-> Hotelsprofiles to $ this-> HotelsProfiles.
Зачем? Что случилось? Я пишу конвенцию торта в неправильном режиме?
Пожалуйста, вы можете сказать мне, в каком режиме мне нужно правильно присваивать имена файлам, если я хочу добавить профиль в таблицу отелей?
url = / hotelsprofiles / action
Этот URL по умолчанию будет искать файл:
src/Controller/HotelsprofilesController.php
Файл правильно назван в соответствии с вопросом:
src/Controller/HotelsProfilesController.php
^
Этот URL будет по-прежнему работать в нечувствительной к регистру файловой системе (windows, osx), но не будет работать в чувствительной к регистру файловой системе (linux).
Таким образом, причина проблемы не в обновлении, а в сравнении окон (версия 3.1.1) с не-окнами (3.1.2 — но версия не имеет значения).
конвенции подробно изложены в документации, хотя начинающим проще использовать bake, чтобы гарантировать, что файлы и шаблонный код соответствуют ожиданиям CakePHP:
-> bin/cake bake all HotelsProfiles
Welcome to CakePHP v3.1.2 Console
---------------------------------------------------------------
App : src
Path: /var/www/cakephp.dev/src/
PHP : 5.5.15-1~dotdeb.1
---------------------------------------------------------------
Bake All
---------------------------------------------------------------
One moment while associations are detected.
Baking table class for HotelsProfiles...
Creating file /var/www/cakephp.dev/src/Model/Table/HotelsProfilesTable.php
Wrote `/var/www/cakephp.dev/src/Model/Table/HotelsProfilesTable.php`
Baking entity class for HotelsProfile...
Creating file /var/www/cakephp.dev/src/Model/Entity/HotelsProfile.php
Wrote `/var/www/cakephp.dev/src/Model/Entity/HotelsProfile.php`
Baking test fixture for HotelsProfiles...
Creating file /var/www/cakephp.dev/tests/Fixture/HotelsProfilesFixture.php
Wrote `/var/www/cakephp.dev/tests/Fixture/HotelsProfilesFixture.php`
Bake is detecting possible fixtures...
Baking test case for App\Model\Table\HotelsProfilesTable ...
Creating file /var/www/cakephp.dev/tests/TestCase/Model/Table/HotelsProfilesTableTest.php
Wrote `/var/www/cakephp.dev/tests/TestCase/Model/Table/HotelsProfilesTableTest.php`
Baking controller class for HotelsProfiles...
Creating file /var/www/cakephp.dev/src/Controller/HotelsProfilesController.php
Wrote `/var/www/cakephp.dev/src/Controller/HotelsProfilesController.php`
Bake is detecting possible fixtures...
Baking test case for App\Controller\HotelsProfilesController ...
Creating file /var/www/cakephp.dev/tests/TestCase/Controller/HotelsProfilesControllerTest.php
Wrote `/var/www/cakephp.dev/tests/TestCase/Controller/HotelsProfilesControllerTest.php`
Baking `index` view file...
Creating file /var/www/cakephp.dev/src/Template/HotelsProfiles/index.ctp
Wrote `/var/www/cakephp.dev/src/Template/HotelsProfiles/index.ctp`
Baking `view` view file...
Creating file /var/www/cakephp.dev/src/Template/HotelsProfiles/view.ctp
Wrote `/var/www/cakephp.dev/src/Template/HotelsProfiles/view.ctp`
Baking `add` view file...
Creating file /var/www/cakephp.dev/src/Template/HotelsProfiles/add.ctp
Wrote `/var/www/cakephp.dev/src/Template/HotelsProfiles/add.ctp`
Baking `edit` view file...
Creating file /var/www/cakephp.dev/src/Template/HotelsProfiles/edit.ctp
Wrote `/var/www/cakephp.dev/src/Template/HotelsProfiles/edit.ctp`
Bake All complete.
Таким образом, соглашения о вас заботятся, а не только об именах файлов:
...
$this->set('hotelsProfiles', $this->paginate($this->HotelsProfiles));
^
...
Вам может не понадобиться запеченный код — но использование bake ответит на многие ваши вопросы, просто взглянув на испеченный код или используя его. Обратите внимание на различия в вопросе:
$this->HotelsProfiles
/hotels-profiles/view/1
— хотя точная форма зависит от класса маршрута по умолчанию, который настраивается в файле маршрутов.Других решений пока нет …