Поведение, которое вы видите, происходит потому, что в beforeValidate
вы изменяете значения в элементе Model::data
, тогда как то, что отображается в вашей форме, находится в элементе Controller::data
, а Model::data
никогда не получаетотправлено обратно на контроллер.
Вам нужно будет выполнить массаж данных с контроллера.Например, вы можете преобразовать операции, выполняемые в beforeValidate
, в открытый метод massageData
, который вы вызываете ранее в контроллере перед этапом сохранения / проверки.
В вашей модели:
class Oligo extends AppModel
{
// stuff
function massageData($data){
$data['Oligo']['sequence'] = str_replace(' ', '', $data['Oligo']['sequence']);
$data['Oligo']['sequence'] = strtoupper($data['Oligo']['sequence']);
return $data;
}
// other stuff
}
В вашем контроллере:
class OligosController extends AppController
{
// stuff
function add()
{
if ($this->data) {
$this->data = $this->Oligo->massageData($this->data);
if ($this->Oligo->save($this->data)) {
// post-save logic
} else {
// error handling
}
}
// view context preparation
}
// other stuff
}
HTH.