Маршруты CakePHP версии 3.1.1 не работают с версией 3.1.2, возможно, неправильные соглашения?

Я обновляю свое приложение cakePHP с версии 3.1.1 до версии 3.1.2, и в этом проходе все мои маршруты и имена файлов сломались.

с v3.1.1:

db_table = hotels_profiles (1 к 1 правильно называть это таким образом, если у меня есть таблица «отели»?)

ModelTable = ГостиницыПрофилесТабле

Сущность = Профиль Гостиницы

Controller = HotelsProfilesController (для модели вызова $this->Hotelsprofiles)

url = /профили отелей/действие

Теперь с v3.1.2 мне нужно переименовать:

Контроллер на Hotelsprofiles или измените мой URL-адрес на hotels_profiles.

В контроллере для модели вызова мне нужно переименовать

$this->Hotelsprofiles в $this->HotelsProfiles.

Почему? Что случилось? Я пишу соглашение о торте в неправильном режиме?

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


person Artur Mamedov    schedule 23.10.2015    source источник
comment
@ AD7six AD7six да, вы правы, мой 3.1.1 находится в Windows локально, а 3.1.2 удаленно в Linux. Большое спасибо! Теперь я понял, что мои соглашения неверны, мне нужно переименовать некоторые вещи. Еще раз спасибо! Хорошего дня! Если вы не ответите с правильным обозначением соглашения, я проверю ваш ответ, как решение.   -  person Artur Mamedov    schedule 23.10.2015


Ответы (1)


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

url = /профили отелей/действие

Этот URL по умолчанию будет искать файл:

src/Controller/HotelsprofilesController.php

Файл назван правильно в соответствии с вопросом:

src/Controller/HotelsProfilesController.php
                     ^

Этот URL-адрес по-прежнему будет работать в файловой системе без учета регистра (windows, osx), но не будет работать в файловой системе с учетом регистра (linux).

Так что причина проблемы не в обновлении, а в сравнении windows (версия 3.1.1) с не-windows (3.1.2 - но версия не актуальна).

Правильные имена файлов

условия подробно описаны в документации, хотя новичкам будет проще. чтобы просто использовать запекание, чтобы убедиться, что файлы и шаблонный код соответствуют ожиданиям 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));
                                                          ^
...

Вам может не понадобиться запеченный код, но использование запекания ответит на многие ваши вопросы, просто взглянув на запеченный код или используя его. Обратите внимание на различия в вопросе:

  • $this->HotelsProfiles
  • Сгенерированные URL-адреса по умолчанию будут иметь форму /hotels-profiles/view/1, хотя точная форма зависит от класса маршрута по умолчанию, который имеет вид настраивается в файле маршрутов.
person AD7six    schedule 23.10.2015