Маршруты CakePHP v3.1.1 не работают с v3.1.2, возможно, неправильные соглашения?

Я обновляю свое приложение 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.

Зачем? Что случилось? Я пишу конвенцию торта в неправильном режиме?

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

2

Решение

Обновление не является причиной проблемы

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
  • Сгенерированные URL по умолчанию будут иметь вид /hotels-profiles/view/1 — хотя точная форма зависит от класса маршрута по умолчанию, который настраивается в файле маршрутов.
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]