cakephp saveВсе не работает вообще - PullRequest
0 голосов
/ 04 сентября 2010

поэтому у меня есть Тариф, который имеет много цены (каждая для другой валюты - на самом деле не имеет значения)

представление (удалены несущественные части)

<?php echo $this->Form->create('Tarif');
  echo $this->Form->input("Price.0.price");
  echo $this->Form->input("Price.0.currency");
  echo $this->Form->input("Price.0.sms_format");
  echo $this->Form->input("Price.0.sms_number");
  echo $html->link(__('Add currency', true), '#', array('onclick'=>'return false;', 'class' => 'tarifs-add-currency'));

  echo $this->Form->input('Tarif.valid_since', array('timeFormat' => '24'));
  echo $this->Form->input('Tarif.valid_until', array('timeFormat' => '24'));
  echo $this->Form->input('Tarif.storage_time', array('label' => __('Storage time (days)', true)));
echo $this->Form->end(__('Submit', true));?>

Функция контроллера длясохранить это выглядит так

function admin_add() {
  if (!empty($this->data)) {
    $this->Tarif->create();
    if ($this->Tarif->saveAll($this->data)) {
      $this->Session->setFlash(__('The tarif has been saved', true));
      $this->redirect(array('action' => 'admin_index'));
    } else {
      $this->Session->setFlash(__('The tarif could not be saved. Please, try again.', true));
    }
  }
}

Ссылка «Добавить валюту» предназначена для добавления новых входных данных для новых цен, но это не проблема, поскольку она не работает даже без добавления валют.Когда я пытаюсь сохранить его, он говорит: «Тариф не может быть сохранен.Пожалуйста, попробуйте еще раз.'.Разве вы не знаете, что я должен изменить, чтобы это работало?

Спасибо, EL

1 Ответ

2 голосов
/ 04 сентября 2010

Для меня это выглядит так, как будто у вас есть проблема с проверкой - проверьте, есть ли в ваших моделях некоторые правила проверки для полей, которых нет в форме.Например, если у вас есть поле user_id в таблице, и если вы строите свою модель с помощью консоли bake, возможно, это поле будет создано как числовое.

Таким образом, даже если оно не в форме, оно проверено, а в формевернуть ложь.Попробуйте напечатать $ this-> YourModel-> validationErrors и посмотрите, есть ли что-то там.

Еще один совет - вы случайно использовали в своих моделях beforeSave () и beforeValidate ()?Если это так, им нужно вернуть bool true , в противном случае функция сохранения также может вернуть false, и ничего не сохранит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...