Prestashop: после создания хука для действия ProductDdd и добавления продукта из бэкэнда выдает ошибку - PullRequest
0 голосов
/ 12 сентября 2018

После создания ловушки для actionProductAdd и добавления продукта из бэкэнда возникает ошибка для версии 1.7, как показано ниже:

Oops! Произошла ошибка Сервер вернул "500 Внутренний сервер Ошибка ". Что-то сломано. Пожалуйста, дайте нам знать, что вы делали когда произошла эта ошибка. Мы исправим это как можно скорее. сожалею за причиненные неудобства.

Ниже мой код для перехвата файла папки модуля

<?php

class XyzData extends Module {


    public static $executed = false;

    public function __construct() {
        parent::__construct();
    }

    public function install() {
        return parent::install() && $this->registerHook('actionProductSave');
    }

    public function uninstall() {

    }

    public function hookActionProductSave($params) {
        echo "Calling function"; exit;
    }
}

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Сначала нужно создать модуль, и в этом модуле вы можете вызвать actionProductSave.Подробный список хуков вы найдете здесь здесь .

Для создания модуля;например, Мой модуль (my_module) , вам необходимо выполнить следующие шаги:

1) Создать папку my_module в каталоге modules.

2) Добавить файл my_module.php и logo.png файл в каталог my_module.Файл config.xml будет создан автоматически при установке модуля.

3) Добавьте приведенный ниже код в файл 'my_module.php'.Вы можете делать свои вещи в функции с именем hookActionProductSave.эта функция будет вызываться каждый раз при сохранении продукта.

if (!defined('_PS_VERSION_')) {
    exit;
}

class My_Module extends Module
{

    public function __construct()
    {
        $this->name = 'my_module';
        $this->author = 'Divyesh Prajapati';
        $this->version = '1.0.0';
        $this->need_instance = 1;
        $this->tab = 'administration';

        $this->bootstrap = true;
        parent::__construct();

        $this->displayName = $this->trans('My Module', array(), 'Modules.MyModule.Admin');

        $this->ps_versions_compliancy = array('min' => '1.7.1.0', 'max' => _PS_VERSION_);
    }

    public function install()
    {
         return parent::install() && $this->registerHook(['actionProductSave']);
    }

    public function uninstall()
    {
        return parent::uninstall();
    }

    public function hookActionProductSave($params) {
        $product_id = $params['id_product']; // Product Id
        $product = $params['product']; // Product Object

        // Do your stuffs here
    }
}

4) Теперь перейдите к Admin> Модули> Модули и службы ;перейдите на вкладку Выбор , найдите модуль my_module и установите его.

5) Теперь всякий раз, когда ваш продукт будет сохранен из панели администратора;материалы, которые вы написали в hookActionProductSave, будут называться.Пожалуйста, найдите прикрепленное изображение для массива, который вы получите в массиве $params, когда продукт будет сохранен. enter image description here

Надеюсь, это поможет!

0 голосов
/ 12 сентября 2018

Хук actionProductSave НЕ для рендеринга контента, он для обработки данных о продукте с вашей стороны.

...