Двойная запись с cakePhp - PullRequest
       18

Двойная запись с cakePhp

0 голосов
/ 24 апреля 2019

Я пытаюсь применить данные, добавив _copy к имени и, конечно, новый идентификатор, но я совсем не эксперт в cakePHP, и я не знаю, с чего начать.Вот мое мнение: я добавляю кнопку «дублировать» с маршрутом в контроллере

<td>
            <?php echo $this->Html->link(
                'Dupliquer',
                array(
                    'controller' => 'contracts',
                    'action' => 'duplicate',
                    $contract['Contract']['id']
                ),
                array(
                    'class' => 'btn btn-default btn-sm'
                )
            ); ?>
        </td>

Функция, которую я вызываю в моем контроллере:

public function duplicate($id = null) {
        if (!$id)
        {
            throw new NotFoundException(__('Identifiant invalide'));
        }

        $contract = $this->Contract->find('first', [
            'conditions' => [
                'Contract.id' => $id
            ]
        ]);

        if (!$this->Contract->HasAny(['Contract.id' => $id])) {
            throw new NotFoundException(__('Le contrat n\'a pas pu être trouvé'));
        }

        $data = [
            'name' => $contract['Contract']['name']. '_copy',
        ];

        return $this->redirect('edit');
    }

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

Спасибо.

1 Ответ

0 голосов
/ 24 апреля 2019

Изменение:

$contract = $this->Contract->findById($id);

на:

$contract = $this->Contract->find()->where(['id' => $id])->first();

, затем:

$data = [
  'name' => $contract->name. '_copy',
  // other fields ...
];

$entity = $this->Contracts->newEntity($data);
$this->Contracts->save($entity);
// ...
// $this->redirect($this->referer());
...