У меня есть модель в Cakephp и вы хотите изменить поле в функции beforeSave, но сохраненные данные неверны.CakePHP Как изменить поле в beforeSave
Вот моя функция:
public function beforeSave($options = array()) {
$address = @ClassRegistry::init('Address')->read(null, $this->data['Entry']['address_id']);
if($address != false) {
$url_address = $address['Address']['address']." ".$address['Address']['zip']." ".$address['Address']['city'];
$geocode = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.urlencode($url_address).'&sensor=false');
$output = json_decode($geocode);
$lat = @$output->results[0]->geometry->location->lat;
$lng = @$output->results[0]->geometry->location->lng;
$this->data['Entry']['latitude'] = 0;
$this->data['Entry']['longitude'] = 0;
if($output->status == "OK") {
$this->data['Entry']['latitude'] = $lat;
$this->data['Entry']['longitude'] = $lng;
}
}
return true;
}
Результат от GoogleAPI правильно, я проверил это, написав:
print_r($this->data);
exit();
только данные, записанные в БД не является правильным. Не знаю, почему - какие-то идеи ???
Thx
Что такое название вашей модели? –
Я бы не использовал '@ClassRegistry:' calls (@ здесь плохо). Я также не буду кодировать слишком много этого конкретного запроса сторонней api в метод beforeSave модели. Попробуйте обернуть его с помощью lib или поведения. Подсказка: http://www.dereuromark.de/2012/06/12/geocoding-with-cakephp/ – mark
Название модели - «Запись» –