Не могу обновить записи в CakePHP 3.8 - PullRequest
0 голосов
/ 08 ноября 2019

Проблема у меня в том, что я не могу обновить записи в моем приложении CakePHP 3.8, которое установлено на живом сервере. На моем сервере разработки это работает нормально.

Я могу вставить новую, я могу удалить, я могу выбрать, но я не могу обновить любую запись.

(Конечно, пользователь MySQL имеет праводля обновления записей.)

Вот как работает действие редактирования, и часть кода, которая никогда не достигается:

public function edit($id = null)
    {
        $activity = $this->Activities->get($id, [
            'contain' => []
        ]);
    if ($this->request->is(['patch', 'post', 'put'])) {

        // **** THIS PART OF CODE IS NOT EXECUTED AFTER UPDATE

        $activity = $this->Activities->patchEntity($activity, $this->request->getData());
        if ($this->Activities->save($activity)) {
            $this->Flash->success(__('The {0} has been saved.', 'Activity'));
            return $this->redirect(['action' => 'index']);
        }
        $this->Flash->error(__('The {0} could not be saved. Please, try again.', 'Activity'));
    }
    $lodges = $this->Activities->Lodges->find('list', ['limit' => 200]);
    $clients = $this->Activities->Clients->find('list', ['limit' => 200]);
    $this->set(compact('activity', 'lodges', 'clients'));
}

Я проверил с помощью pr($this->request), и «патча» нет, 'post' или 'put' метод при попытке обновить запись, только 'get'. Но почему «получить»?

Есть ли что-то с CSRF-компонентом CakePHP 3.8?

Не могли бы вы помочь мне с этим, пожалуйста?

Заранее спасибо!

ОБНОВЛЕНО: это моя форма:

<?php echo $this->Form->create($activity, ['role' => 'form']); ?>  
  <div class="box-body">
    <?php
      echo $this->Form->control('name');
      echo $this->Form->control('description');
      echo $this->Form->control('price_1');
      echo $this->Form->control('price_1_name');
      echo $this->Form->control('price_2');
      echo $this->Form->control('price_2_name');
    ?>
    </div>
    <!-- /.box-body -->
    <?php echo $this->Form->submit(__('Submit')); ?>
    <?php echo $this->Form->end(); ?>

И, кроме того, у меня та же проблема с каждой формой обновления в этом приложении на живом сервере. На сервере разработки работает нормально.

ОБНОВЛЕНИЕ 2:

В файлах журнала безопасности мода я получаю сообщение:

Запрос: POST / местоположения/ edit / 3 Действие Описание: доступ запрещен с кодом 403 (этап 2). Обоснование: Соответствие строки "cakephp" в REQUEST_COOKIES_NAMES: CAKEPHP.

Я добавил следующую строку в bootstrap.php и app.php, но сообщение об ошибке остается прежним:

   Configure::write('Session', [
        'defaults' => 'php',
        'cookie'=>'NICK',
    ]);

1 Ответ

0 голосов
/ 09 ноября 2019

Итак, решение таково:

Да, как я уже писал, мне нужно было добавить следующее в app.php:

Configure::write('Session', [
'defaults' => 'php',
'cookie'=>'NICK',
]);

и после этого удалить куки в браузере.

Надеюсь, это кому-нибудь поможет, я действительно изо всех сил пытался это решить.

...