Если бы я использовал функцию model
afterFind
для настройки данных в зависимости от их местоположения в ГЕО, например:
#app/models/product.php
function afterFind($results)
{
if( $userInArea)
{
if(!isset($results[0]['Product']['price']))
{
return $results;
}
foreach ($results as $key => $val)
{
$results[$key]['Product']['price'] = $this->priceAdjustAfterFind($val['Product']['price']);
}
return $results;
}
}
function priceAdjustAfterFind($price)
{
return $price * 1.2;
}
Это сделало бы поле цены данных, возвращаемыхмодель на 20% выше, если в определенной области.
Проблема:
Допустим, цена равна 100. Администратор находится в области GEO и идет редактировать продукт admin/product/edit/4
.Данные, переданные edit view
от product model
, повысят цену до 120, потому что она находится в области GEO, и приведут к корректировке цены.
Поэтому, как только она сохранит данные (скажем, она изменила имя), она непреднамеренно изменит цену с 100 на 120. Теперь, если она отредактирует ее снова, она будет загружаться как 144, увеличиваясь каждый раз.
Я не придумываю логического способа предотвратить это.Есть предложения?