Функция сохранения товара

  • 5 Ответов
  • 359 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн kerch

День добрый. Подсткажите кто сталкивался.
Есть в корне файл в котором хочу реализовать создание товара. Сразу говорю: CSVI не предлогать. Задача специфическая.
вот так подключил файл administrator\components\com_virtuemart\models\product.php
Получил модель.
Код: (php) [Выделить]
if (!class_exists( 'VmConfig' )){
    require (JPATH_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php');   
}
$config = VmConfig::loadConfig();

if (!class_exists ('VmModel')) {
require(VMPATH_ADMIN . DS . 'helpers' . DS . 'vmmodel.php');
}

$productModel = VmModel::getModel('product');
$product = $productModel->getProduct('15');

$product->slug = 'new slug';

echo '<pre>';
print_r($product);
echo '</pre>';

slug меняется, все ок. А сохранить то как?
Но как воспользоватся функцией save() которая лежит в \administrator\components\com_virtuemart\controllers\product.php
Строка 57
Или вот есть еще функция \administrator\components\com_virtuemart\helpers\vmcontroller.php
Строка 156
Вообщем как программно сохранить товар после изменений? Вроде искал хорошо. Функции update() не нашел.
И как програмно создать новый товар?

Joomla 3.5.1
VirtueMart 3.0.12

*

Онлайн robert

Re: Функция сохранения товара
« Ответ #1 : 10.04.2016, 15:09:31 »
Но как воспользоватся функцией save() которая лежит в \administrator\components\com_virtuemart\controllers\product.php
Подключите этот контроллер и используйте его методы. Если ничего не нужно менять, только сохранять то, что есть, то можно сразу в модели
Код: (php-brief) [Выделить]
$productModel->store($product);
И как програмно создать новый товар?
Для начала нужно задать объекту(массиву) $product все необходимые свойства(элементы), а потом его сохранять.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн kerch

Re: Функция сохранения товара
« Ответ #2 : 10.04.2016, 15:28:23 »
Код: (php-brief) [Выделить]
$productModel->store($product);
Так всетки сохранение идет через функцию store()?
Но насколько я проверил дебагером функция save () вроде как работает при сохранении.
Или всетки store()?

Проверил. Вот так не работает.
Код: (php-brief) [Выделить]
$productModel = VmModel::getModel('product');
$product = $productModel->getProduct('15');
$product_new = $productModel->getProduct();
$product->slug = 'new slug';
$productModel->store($product);
$product->slug остается прежним.
« Последнее редактирование: 10.04.2016, 16:04:34 от kerch »

*

Онлайн robert

Re: Функция сохранения товара
« Ответ #3 : 10.04.2016, 17:21:08 »
Так всетки сохранение идет через функцию store()?
Но насколько я проверил дебагером функция save () вроде как работает при сохранении.
Или всетки store()?
save() - метод контроллера, который в конечном счете вызывает store() в модели.
Проверил. Вот так не работает.
Конечно, нет. Перед исполнением проверяются token и другие параметры, какие - посмотрите код этих функций.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн kerch

Re: Функция сохранения товара
« Ответ #4 : 10.04.2016, 17:44:29 »
Ага, спасибо.
Буду разбираться.

*

Оффлайн kerch

Re: Функция сохранения товара
« Ответ #5 : 10.04.2016, 17:49:00 »
В файл administrator\components\com_virtuemart\models\product.php закоментил строку 1746
Код: (php) [Выделить]
vRequest::vmCheckToken();Начало сохранять.
Еще вопрос. Через store() я могу как обновлять так и создавать товары? Верно?
Или для разных целей есть разные функции?