Перейти к содержанию
Cramac

Делаю привязку группы атрибутов к категории

Рекомендуемые сообщения

Всем привет. Делаю привязку группы атрибутов к категории.

Пока делаю в форме изменения категории.

в форму добавил выпадающий список /admin/view/template/catalog/category_form.tpl

   <tr>
			  <td><?php echo $gr_attr; ?></td>
			  <td width="150">
	 <select name="atrg_id">
				  <option value="0"><?php echo $text_none; ?></option>
				  <?php foreach ($attrg as $category) { ?>
				  <?php if ($category['attribute_id'] == $parent_id) { ?>
				  <option value="<?php echo $category['attribute_id']; ?>" selected="selected"><?php echo $category['name']; ?></option>
				  <?php } else { ?>
				  <option value="<?php echo $category['attribute_id']; ?>"><?php echo $category['name']; ?></option>
				  <?php } ?>
				  <?php } ?>
			    </select></td>
	 <td></td>
		    </tr>

в файле admin/model/catalog/category.php

public function getAttributeGroup() {
$query = $this->db->query("SELECT * FROM attribute_group c LEFT JOIN  attribute_group_description cd ON (c.attribute_group_id = cd.attribute_group_id) ORDER BY c.sort_order, cd.name");
  return $query->rows;
}

в файле admin/controller/catalog/category.php

в функции getForm

добавлено

$this->data['attrg'] = $this->getAttrGr();

и добавил функцию:

private function getAttrGr() {
  $output = array();
 
  $results = $this->model_catalog_category->getAttributeGroup();
  foreach ($results as $result) {
 
   $name = $result['name'];

   $selected = isset($this->request->post['selected']) && in_array($result['category_id'], $this->request->post['selected']);
   $action = array();

   $output[$result['attribute_group_id']] = array(
    'attribute_id' => $result['attribute_group_id'],
    'name'	    => $name,
    'sort_order'  => $result['sort_order'],
    'selected'    => $selected
   );

  }
  return $output;
}
ну и прописал в скл апдейте данное поле обновлять в базе.

Все работает, но как сделать что бы можно было оперировать с селектед?

т.е. по принципу родительской группы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чем оперировать? (опечатки в таких случаях дорого стоят, а транслит вообще приводит к смерти).

по принципу чего? какой группы? группы чего?

оформлено классно, но вопрос непонятен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

задача - что бы при изменении категории, новый добавленный селект, ставил на нужной группе selected т.е. если категории уже назначена группа, она была выбрана.

Сейчас при изменении каждый раз надо заново выбирать группу атрибутов, иначе сбрасывается при сохранении

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

все равно не совсем понятно.

скриншот сделайте или покажите админку.

если я правильно понимаю, то вам надо что-то типа

$this->data['attrg'] = $this->getAttrGr($this->request->post['selected']);

...

private function getAttrGr($selectedAttrGrp=array()) {

...

$selected = in_array($result['category_id'], $selectedAttrGrp);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Изображение

сейчас можно зайти в редактирование категории и присвоить группу атрибутов. Но когда редактируешь категорию, где группа уже прописана, в выпадающем списке сейчас не ставится прописанная группа.

В шаблоне смотрел массив: selected у меня пустое

Array
(
	[7] => Array
		(
			[attribute_id] => 7
			[name] => Планшеты
			[sort_order] => 0
			[selected] =>
		)
	[8] => Array
		(
			[attribute_id] => 8
			[name] => Телефоны
			[sort_order] => 0
			[selected] =>
		)
)

получается что в getAttrGr мне надо передать ИД что уже записан в базу

а $this->request->post['selected'] это я так понимаю если форма не правильно заполнена

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.