Подготовка к переходу с CakePHP 3.4 на CakePHP 4.0

Мы начинаем вторую часть моего проекта. И мы хотели бы сначала начать процесс миграции, прежде чем работать над второй половиной проекта. У меня есть некоторые опасения по поводу процесса миграции, и я хотел бы развеять свои сомнения.

В настоящее время в моем проекте мы использовали многие из этих функций, упомянутых ниже.

  1. Должны ли мы заменить все $this->Form->input['description'] на $this->Form->control['description']?
  2. Когда вы упомянули, что Response::download() станет Response::withDownload(). Вы имеете в виду, что я должен изменить $this->response->download($filename) на $this->response->WithDownload($filename)?
  3. У нас есть эта строка кода $this->primaryKey('id') в нашем Table.php, и вы упомянули, что она является частью устаревшего списка и заменена методами getX() и setX(). Что ты имеешь ввиду? Я надеюсь, что вы можете привести мне пример.
  4. Приведенный ниже код находится в контроллере, и я заметил, что вы упоминаете гидрат() (теперь enableHydration() / isHydrationEnabled()). Какие изменения нам нужно внести ниже?

    $CustomersordersTable-> find()                  
                              -> select(['order_id'=>'Customerorders.order_id'])
                              -> where(['id IN' => $studentlist])
                              -> hydrate(false)
                              -> toArray();
    
  5. Я также понимаю, что $this->request->data['id'] устарел, и нам нужно $this->request->getData('id'). Однако при добавлении деталей прямо сейчас мы не можем присвоить случайное значение идентификатора этому $this->request->getData('id'). Раньше я назначал случайный идентификатор с приведенным ниже перед сохранением в таблицу.

    $this->request->data['id'] = TableRegistry::get('Customers')->find('guid'); 
    

У вас есть предварительная дата выпуска CakePHP 4.0?


person EssEss    schedule 22.02.2017    source источник
comment
Cakephp 4.0 Roadmap github.com/cakephp/cakephp/wiki/4.0-Roadmap   -  person tarikul05    schedule 22.02.2017


Ответы (2)


  1. Да
  2. Да
  3. Просто вы используете методы set, чтобы установить значение и получить значение. Например, setTable($name).
  4. включитьгидратацию ()
  5. Данные запроса никогда не должны были изменяться напрямую. Не до 3.4 и не после. Получите данные из запроса, измените их, делайте с ними все, что хотите. Объекты запроса в 3.4 являются неизменяемыми.

Для CakePHP4 нет даты выпуска, есть только дорожная карта без каких-либо дат. CakePHP разрабатывается волонтерами, поэтому работа выполняется по мере того, как у людей есть время и настроение для работы над ней. Вклад приветствуется. :)

person floriank    schedule 22.02.2017
comment
Большое спасибо за твою помощь! - person EssEss; 22.02.2017

5.

$guid = TableRegistry::get('Customers')->find('guid');
$newData = $this->request->withData('id', $guid);

// получаем новые данные запроса

$newData->getData('id');
person Tom    schedule 25.02.2017
comment
Добро пожаловать в Stack Overflow! Хотя вы, возможно, решили проблему этого пользователя, ответы, содержащие только код, не очень полезны для пользователей, которые обратятся к этому вопросу в будущем. Пожалуйста, отредактируйте свой ответ, чтобы объяснить, почему ваш код решает исходную проблему. - person Joe C; 25.02.2017