Создание сайтов в Челябинске. Продвижение. Оптимизация

Разработка сайтов, поисковая оптимизация, продвижение, техническая поддержка и обслуживание вебсайтов любой сложности. Быстро, качественно и по разумной цене.

Извлечение данных из поля params

Как многим известно Joomla хранит параметры модулей, которые создаются на основе XML файлов в таблице базы данных в единственном поле params в строковом виде. На самом деле это достаточно удобно и иногда таким приемом можно воспользоваться и в своих целях.

Ниже приведен кусок кода конкретной модели, в которую попадают данные из формы в переменной $data. Мы знаем что Joomla 3 с новыми моделями умеет сохранять данные в соответствующие поля таблиц, но как быть если это массив? Об этом далее.

public function save($data)
{    
  $params = array_map(array($this, '_restructData'), $data['params']['name'], $data['params']['price'], $data['params']['count']); 
//делаем реструктуризацию данных $registry = new JRegistry($params);
//созадем объект класса JRegistry $data['params'] = $registry->toString();
//превращаем его в строку и перезаписываем $data['prarams']
//теперь модель справится с таким полем и сохранит его куда нужно } protected function _restructData($name, $price, $count) { if ($name && $price && $count) return array('name' => $name, 'price' => $price, 'count' => $count); }

Обратная задача:

Нужно извлечь данные из поля params, тут все еще проще:

$params = new JRegistry(); 
//создаем класс JRegistry $params->loadString($item->params);
//передаем ему строку из базы или еще от куда-нибудь
$param = $params->get('parameter_name');
//обращаемся к определенному параметру и сохраняем его в переменную

Совет оказался полезным? Возник вопрос? Вступайте в нашу группу и смело задавайте vk.com/saity74