Тема: Вкладка со своей формой

Доброго утра!

Такой вопросик, мне нужно в окне редактирования, к примеру, бренда сделать новую вкладку и на ней разместить произвольную форму, которую можно подгрузить из view. Вкладка сама получается, а вот как описать размещение сверстанной формы? Вот код:

public static function ormInitCatalogBrand(\Catalog\Model\Orm\Brand $brand)
    {
        $brand->getPropertyIterator()->append(array( //Добавляем свойства к объекту
            'Моя закладка', //Закладка, появится в форме редактирования бренда
             
            'test_property' => new \RS\Orm\Type\Template(array( //Тип поля. Вот здесь надо Template или UserTemplate, как я понял
             // а как дальше прописывать?
                
            ))
        ));*/
    }

помогите советом....

Повысить оценку Понизить оценку

Re: Вкладка со своей формой

в принципе даже не надо форму выводить, можно просто вывести кнопку диалога выбора товара, типа как сделано для сопутствующих товаров в карточке товара

Повысить оценку Понизить оценку

Re: Вкладка со своей формой

никто не подскажет как вывести кнопку????

Повысить оценку Понизить оценку

4

Re: Вкладка со своей формой

Евгений пишет:

никто не подскажет как вывести кнопку????

В документации все есть.

Повысить оценку Понизить оценку

Re: Вкладка со своей формой

Если Вам нужно диалоговое окно, то Вам проще всего реализовать всё на основе рекомендованных товаров как это сделано при редактировании товара. А именно как у объекта \Catalog\Model\Orm\Product (файл /modules/catalog/model/orm/product.inc.php).

'recommended' => new Type\Varchar(array(
    'maxLength' => 4000,
    'description' => t('Рекомендуемые товары'),
    'visible' => false,
        )),
'recommended_arr' => new Type\ArrayList(array(
    'visible' => false
        )),
t('Рекомендуемые товары'),
    '_recomended_' => new Type\UserTemplate(
                        '%catalog%/form/product/recomended.tpl',
                        '%catalog%/form/product/merecomended.tpl',array(
        'meVisible' => true  //Видимость при мультиредактировании
    )),

   
Вот здесь 3 поля. Два скрытых. И одно, которое отвечает за отображение всей вкладки. Это происходит за счёт того, что используется тип поля UserTemplate. Если вы его используете, то оно распрастраняется полностью на ближайшую вкладку. В данном случае рекомендованные товары.
Первое поле служит для хранения массива товаров или каталогов выбранных в сериализованном виде, а вот второе содержит уже рассериализованный массив, чтобы было удобно с ним работать. Когда товар загружается из базы при его инициализации поле первое рассериализовывается и передаётся
значение во второе.

/**
* Вызывается после загрузки объекта
* @return void
*/
function afterObjectLoad()
{
    if (!empty($this['recommended'])) {
        $this['recommended_arr'] = @unserialize($this['recommended']);
    }
}

Вам нужно будет использовать хук orm.afterload.catalog-product.
При сохранении товара, поле recommended_arr сохраняет сериализованный массив в recommended.

 /**
 * Вызывается перед сохранением объекта
 * 
 * @param string $flag - строковое представление текущей операции (insert или update)
 * @return void
 */
function beforeWrite($flag)
{
    if ($this->isModified('recommended_arr')){ //Если изменялись рекомендуемые
        $this['recommended'] = serialize($this['recommended_arr']);
    }
}

На вкладке отрабатывает шаблон '%catalog%/form/product/recomended.tpl'. %catalog% - путь к папке шаблоном модуля catalog (/modules/catalog/view/). Там вызывается функция getProductDialog, которая принадлежит объекту товара. Она же и выводит нужную Вам кнопку.
Однако эта функция использует поля для рекомендуемых товаров, соответсвенно Вам нужно сделать будет свою функцию просто скопировав и заменив нужное и расширить объект товара, чтобы он видел уже Вашу другую функцию для отображания. Это можно сделать через

behavior

.
https://www.youtube.com/watch?v=7jsv06V … mp;index=4

Re: Вкладка со своей формой

Александр, спасибо в освоении системы, все получилось...

Повысить оценку Понизить оценку

Re: Вкладка со своей формой

Еще побеспокою, как можно отформатировать число под цену, может есть какие-то хелперы. Типа было 20000, стало 20 000...

Повысить оценку Понизить оценку

Re: Вкладка со своей формой

{$price|format_price}

Re: Вкладка со своей формой

спасибо, надо будет запомнить )))

Повысить оценку Понизить оценку