Здравствуйте, есть функционал, который выводит поле и данные в карточке в опции, с одним языком работает все нормально. Пытаюсь сделать текстовые поле мультиязычным - но ничего не получается.
Код из модели опций
public function getOptionValuesId($option_id) {
$option_value_data = array();
$option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value ov LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE ov.option_id = '" . (int)$option_id . "' ORDER BY ov.sort_order, ovd.name");
foreach ($option_value_query->rows as $option_value) {
$option_value_data[$option_value['option_value_id']] = array(
'option_value_id' => $option_value['option_value_id'],
'name' => $option_value['name'],
'image' => $option_value['image'],
'sort_order' => $option_value['sort_order']
);
}
return $option_value_data;
}
public function getOptionValueIdByName($option_id, $name) {
$query = $this->db->query("SELECT option_value_id FROM " . DB_PREFIX . "option_value_description WHERE option_id = '".(int)$option_id."' AND name LIKE '".$this->db->escape($name)."' AND language_id = '".(int)$this->config->get('config_language_id')."'");
return isset($query->row['option_value_id']) ? $query->row['option_value_id'] : false;
}
public function updateOptionValue($data) {
$this->db->query("UPDATE " . DB_PREFIX . "option_value SET sort_order = '" . (int)$data['sort_order'] . "' WHERE option_value_id = '" . (int)$data['option_value_id'] . "'");
$this->db->query("UPDATE " . DB_PREFIX . "option_value_description SET name = '" . $this->db->escape($data['name']) . "' WHERE option_value_id = '" . (int)$data['option_value_id'] . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'");
}
public function addOptionValue($data) {
$this->db->query("INSERT INTO " . DB_PREFIX . "option_value SET option_id = '" . (int)$data['option_id'] . "', image = '', sort_order = '" . (int)$data['sort_order'] . "'");
$option_value_id = $this->db->getLastId();
$this->db->query("INSERT INTO " . DB_PREFIX . "option_value_description SET option_value_id = '" . (int)$option_value_id . "', language_id = '" . (int)$this->config->get('config_language_id') . "', option_id = '" . (int)$data['option_id'] . "', name = '" . $this->db->escape($data['name']) . "'");
return $option_value_id;
}
В контроллере продукта есть строчка, которая обращается к функции модели, которая выше.
$data['option_values'][$product_option['option_id']]['abs'] = $this->model_catalog_option->getOptionValuesId($product_option['option_id']);
Вот код контроллера продукта целиком, где эта строчка
foreach ($data['product_options'] as $product_option) {
if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox' || $product_option['type'] == 'image') {
if (!isset($data['option_values'][$product_option['option_id']])) {
$data['option_values'][$product_option['option_id']] = $this->model_catalog_option->getOptionValues($product_option['option_id']);
$data['option_values'][$product_option['option_id']]['abs'] = $this->model_catalog_option->getOptionValuesId($product_option['option_id']);
}
}
}
Соответственно в product_form.tpl
<td class="text-left">
<?php if (isset($option_values[$product_option['option_id']])) { ?>
<?php if(array_key_exists($product_option_value['option_value_id'],$option_values[$product_option['option_id']]['abs'])) { ?>
<input type="text" name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][name]" value="<?php echo $option_values[$product_option['option_id']]['abs'][$product_option_value['option_value_id']]['name']; ?>" class="form-control">
<input type="hidden" name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][option_value_id]" value="<?php echo $option_values[$product_option['option_id']]['abs'][$product_option_value['option_value_id']]['option_value_id']; ?>">
<?php } ?>
<?php } ?>
<input type="hidden" name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][product_option_value_id]" value="<?php echo $product_option_value['product_option_value_id']; ?>" /></td>
Для мультиязычности я сделал вот так
<td class="text-left">
<?php if (isset($option_values[$product_option['option_id']])) { ?>
<?php if(array_key_exists($product_option_value['option_value_id'],$option_values[$product_option['option_id']]['abs'])) { ?>
<?php foreach ($languages as $language) { ?>
<div class="input-group"><span class="input-group-addon"><img src="language/<?php echo $language['code']; ?>/<?php echo $language['code']; ?>.png" title="<?php echo $language['name']; ?>" /></span>
<input type="text" name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][<?php echo $language['language_id']; ?>][name]" value="<?php echo isset($option_values[$product_option['option_id']]['abs'][$product_option_value['option_value_id']][$language['language_id']]) ? $option_values[$product_option['option_id']]['abs'][$product_option_value['option_value_id']][$language['language_id']]['name'] : ''; ?>" class="form-control">
<input type="hidden" name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][option_value_id]" value="<?php echo $option_values[$product_option['option_id']]['abs'][$product_option_value['option_value_id']]['option_value_id']; ?>">
</div>
<?php echo print_r($option_values[$product_option['option_id']]); ?>
<?php } ?>
<?php } ?>
<?php } ?>
<input type="hidden" name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][product_option_value_id]" value="<?php echo $product_option_value['product_option_value_id']; ?>" /></td>
$option_values[$product_option['option_id']]
в print_r выводит значения name для двух языков из базы данных, поля отображаются правильно для двух языков, ошибок нет, но не сохраняются данные, поля пустые. В чем еще может быть проблема, и что я упустил?