Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

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

в форму добавил выпадающий список /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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.