prestashop 1.7 新模块

     2023-02-16     96

关键词:

【中文标题】prestashop 1.7 新模块【英文标题】:prestashop 1.7 new module 【发布时间】:2018-05-15 07:49:17 【问题描述】:

我在 prestashop 1.7 中遇到问题,当我在我的模块中加载 form.tpl 时,我无法执行 setAction。我需要的是,当我继续付款时,我使用支付平台打开新的销售,并在平台 carge 的 prestashop 中验证我留下代码。请帮忙

prestashop 模块的主文件

         public function hookPaymentOptions($params) 

        if (!$this->active) 
            return;
        

        $this->smarty->assign(
                $this->getPaymentApiVars()
        );

        $apiPayement = new PaymentOption();
        $apiPayement->setModuleName($this->name)
                ->setLogo($this->context->link->getBaseLink().'/modules/hhpayment/views/img/pago.jpg')
//                ->setCallToActionText($this->l(''))                
                //Définition d'un formulaire personnalisé
                ->setForm($this->fetch('module:hhpayment/views/templates/hook/payment_api_form.tpl'))
                ->setAdditionalInformation($this->fetch('module:hhpayment/views/templates/hook/displayPaymentApi.tpl'))
                 ->setAction($this->context->link->getModuleLink($this->name, 'validation', array(), true));


        return [$apiPayement];
    

这是我在没有方法的情况下收取此费用的 form.tpl,但它是通过测试进行的

<form action="$payment_url" target="_blank" >
    <div class="form-group">
        * choix du mode de carte *
        l s='please choose your card type' mod='hhpayment'
            <div class="radio">
                <label>
                    <input type="radio" name="cb_type" value="mastercard" id="cb_type1" checked="checked" /> Pago internacional
                </label>
            </div>
            <div class="radio">
                <label>
                    <input type="radio" name="cb_type" id="cb_type2" value="visa"/> Pago Nacional
                </label>
            </div>            
    </div>
    * Informations pour l'api *
    <input type="hidden" name="success_url" value="$success_url" />
    <input type="hidden" name="error_url" value="$error_url" />
    <input type="hidden" name="id_cart" value="$id_cart" />
    <input type="hidden" name="cart_total" value="$cart_total" />
    <input type="hidden" name="id_customer" value="$id_customer" />
</form>

这是验证文件

class hhpaymentvalidationModuleFrontController extends ModuleFrontController



    /**
     * Validation du paiement standard
     * Puis redirection vers la page de succès de commande
     */
    public function postProcess()
    
         $cart = $this->context->cart;

       $this->abrir("http://davivienda.com");


        if ($cart->id_customer == 0 || $cart->id_address_delivery == 0 || $cart->id_address_invoice == 0 || !$this->module->active) 
            Tools::redirect('index.php?controller=order&step=1');
        

        $customer = new Customer($cart->id_customer);

        if (!Validate::isLoadedObject($customer)) 
            Tools::redirect('index.php?controller=order&step=1');
        

        $currency = $this->context->currency;
        $total = (float)$cart->getOrderTotal(true, Cart::BOTH);

        //La command passe directement en statut payé
        $this->module->validateOrder((int)$cart->id, Configuration::get('PS_OS_PAYMENT'), $total, $this->module->displayName, null, array(), (int)$currency->id, false, $customer->secure_key);
        Tools::redirect('index.php?controller=order-confirmation&id_cart='.(int)$cart->id.'&id_module='.(int)$this->module->id.'&id_order='.$this->module->currentOrder.'&key='.$customer->secure_key);
    

    public function abrir($param) 
    
        echo" <script> window.open(URL,'ventana1,'width=300,height=300,scrollbars=NO')</script> ";


    


【问题讨论】:

这是英文所以。请用英文发帖。 对不起,我的英语说得很少 那么请将您的问题发到es.***.com 我在 prestashop 1.7 中遇到问题,当我在我的模块中加载 form.tpl 时,我无法执行 setAction 我需要的是,当我继续付款时,我打开一个新的销售支付平台和prestashop中的平台carge验证我留下代码帮助是我问的,希望你理解 【参考方案1】:

我能够找到解决此问题的方法,我不知道它是否正确,但它已经对我有用:

postProcess 方法将其传递给 main,validation.php 文件将其传递给 main 文件所在的同一文件夹。

接下来修改validation.php文件,改到main目录下,这个文件应该如下。

应该导入

require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/main.php';

那么为了避免内核错误,必须实现以下代码sn-p

global $kernel;
if(!$kernel)
    require_once _PS_ROOT_DIR_.'/app/AppKernel.php';
    $kernel = new \AppKernel('prod', false);
    $kernel->boot();

在这之后,需要执行逻辑并通过get接收参数,支付完成后返回支付界面,一旦接收到这个数据,就必须恢复购物车并将数据发送到迁移到主文件的函数

ob_start();
    $context = Context::getContext();

if (is_null($context->cart)) 
    $context->cart = new Cart($context->cookie->id_cart);

if (is_null($context->cart->id_currency)) 
    $context->cart->id_currency = $context->cookie->id_currency;


$cart = $context->cart;
$customer = new Customer($cart->id_customer);
$currency = $cart->id_currency;
$total = (float)$cart->getOrderTotal(true, Cart::BOTH);
$object = new filemain();

$order = $object->methodCreateInMain($cart->id, Configuration::get('PS_OS_PAYMENT'), $total, $currency, $customer->secure_key);

validation.php 中的前面代码基本上会检索购物车数据并通过参数将其发送到传递给 main 的函数,在那里将验证和创建订单。

需要注意的是,支付后的返回url必须是ulrCommerce/module/validation.php

以上内容对我来说非常有效,并且是基于查看的各种博客和论坛的解决方案

【讨论】:

覆盖 Prestashop 1.7 模块的方法

】覆盖Prestashop1.7模块的方法【英文标题】:OverrideamethodofPrestashop1.7module【发布时间】:2021-01-0601:18:14【问题描述】:我想重写Prestashop1.7.6.7的官方模块ps_featuredsearch的一行简单代码。文件是/modules/ps_facetedsearch/src/Hook/ProductSearch.php... 查看详情

PrestaShop 1.7 添加新资源和类

】PrestaShop1.7添加新资源和类【英文标题】:PrestaShop1.7Addnewresourcesandclass【发布时间】:2018-04-1809:31:57【问题描述】:我用这段代码创建了新资源:classWebserviceRequestextendsWebserviceRequestCorepublicstaticfunctiongetResources()$resources=parent::getR... 查看详情

Prestashop 1.7 模块目录数据未找到

】Prestashop1.7模块目录数据未找到【英文标题】:Prestashop1.7Modulescatalogdatanotfound【发布时间】:2017-04-0423:11:10【问题描述】:所以我在本地安装了PrestaShop1.7(请记住我的本地作品完美找到)将其移至实时登台(没有数据库导入或... 查看详情

Prestashop 1.7 调试栏

】Prestashop1.7调试栏【英文标题】:Prestashop1.7debugbar【发布时间】:2018-06-0122:35:30【问题描述】:如何在所有网站上都有调试栏?在管理方面,我激活了debugmode,但Symfony调试栏仅在“模块”部分可见。是否可以像运输部分一样在... 查看详情

Prestashop 1.7 - 覆盖 homeslider 模块控制器(hookdisplayHeader javascript)

】Prestashop1.7-覆盖homeslider模块控制器(hookdisplayHeaderjavascript)【英文标题】:Prestashop1.7-overridehomeslidermodulecontroller(hookdisplayHeaderjavascript)【发布时间】:2017-03-2811:10:13【问题描述】:我刚刚发现了新版本的presashop(1.7.0)。我想使用... 查看详情

尝试在 prestashop 1.7 管理模块中加载 js 和 css 文件

】尝试在prestashop1.7管理模块中加载js和css文件【英文标题】:tryingtoloadjsandcssfilesinprestashop1.7adminmodule【发布时间】:2018-01-0301:45:10【问题描述】:我正在学习为prestashop1.7编写模块,目前我正在尝试加载用户尝试配置模块时将使... 查看详情

错误:“错误太多重定向” Prestashop 1.7

】错误:“错误太多重定向”Prestashop1.7【英文标题】:Error:"ErrTooManyRedirect"Prestashop1.7【发布时间】:2017-06-0219:16:27【问题描述】:我在prestashop管理面板上收到ERR_TOO_MANY_REDIRECTS错误只是模块和产品页面。当我尝试连接页... 查看详情

如何使用 prestashop 1.7 上的模块在前台创建自定义页面

】如何使用prestashop1.7上的模块在前台创建自定义页面【英文标题】:HowtocreatecustompageonFront-Officewithamoduleonprestashop1.7【发布时间】:2017-04-0409:21:49【问题描述】:我在产品详细信息页面上创建了按钮A。单击A按钮时,它将重定向... 查看详情

如何在 prestashop 1.7 中向 cms 页面添加挂钩

】如何在prestashop1.7中向cms页面添加挂钩【英文标题】:howtoaddhookstocmspagesinprestashop1.7【发布时间】:2018-05-0110:40:51【问题描述】:我正在发现PrestaShop1.7并尝试将模块添加到特定的CMS页面。但是,CMS页面不允许我运行任何smarty代... 查看详情

从 prestashop 1.6.1.9 升级到 1.7

】从prestashop1.6.1.9升级到1.7【英文标题】:Upgradefromprestashop1.6.1.9to1.7【发布时间】:2017-03-2618:40:34【问题描述】:是否可以?官方文档在哪里?【问题讨论】:【参考方案1】:直接升级是不可能的但是您可以使用这个免费模块将... 查看详情

Prestashop 1.7 块 page_content

】Prestashop1.7块page_content【英文标题】:Prestashop1.7blockpage_content【发布时间】:2017-11-1016:22:50【问题描述】:您好,我试图更好地理解prestashop1.7生成模板的方式,现在我知道新的prestashop.tpl文件使用扩展来创建网站。我想知道page_... 查看详情

Prestashop 1.7 中的自定义钩子

】Prestashop1.7中的自定义钩子【英文标题】:CustomHooksinPrestashop1.7【发布时间】:2017-05-2212:24:06【问题描述】:我尝试为滑块模块为Prestashop1.7.0.3创建一个自定义Hook。我插入:displaySlider:-ps_imageslider在“钩子”块上的theme.yml文件上... 查看详情

Prestashop 1.7 上的 Prestashop1.6 主题

】Prestashop1.7上的Prestashop1.6主题【英文标题】:Prestashop1.6themeonprestashop1.7【发布时间】:2017-05-0609:22:57【问题描述】:我有一个大问题。我已经安装了prestashop1.7,我喜欢它的管理界面,但是,与prestashop1.6提供的主题相比,它的... 查看详情

Prestashop - 现有 prestashop 模块中的覆盖功能

】Prestashop-现有prestashop模块中的覆盖功能【英文标题】:Prestashop-overridefunctioninexistingprestashopmodule【发布时间】:2011-09-0217:45:22【问题描述】:我想更改现有的prestashop模块而不复制它并创建新模块。我知道可以覆盖prestashop中的.t... 查看详情

Prestashop 1.7 白页

】Prestashop1.7白页【英文标题】:Prestashop1.7whitepage【发布时间】:2021-06-1405:34:04【问题描述】:由于OVH崩溃,我必须将我的prestashop1.7迁移到另一台服务器。但我在后台和前台都有空白页。调试模式下没有错误显示。PHP版本:7.1(... 查看详情

在产品 Prestashop 1.7 中添加字段

】在产品Prestashop1.7中添加字段【英文标题】:AddfieldinproductPrestashop1.7【发布时间】:2017-09-2607:20:57【问题描述】:为什么prestashop不将我的修改保存到数据库中?使用prestashop1.7/override/classes/Product.phpclassProductextendsProductCorepublic$por... 查看详情

如何删除 prestashop 1.7 上的送货步骤?

】如何删除prestashop1.7上的送货步骤?【英文标题】:Howtoremovedeliveryshippingsteponprestashop1.7?【发布时间】:2018-04-2400:26:40【问题描述】:参考:Howtoremovedeliveryshippingsteponprestashop1.6.1?我正在寻找Prestashopv1.7.2.4的解决方案,有什么想... 查看详情

Prestashop 1.7 - 覆盖 Symfony 表单约束

】Prestashop1.7-覆盖Symfony表单约束【英文标题】:Prestashop1.7-OverrideSymfonyformconstraints【发布时间】:2021-09-2704:35:33【问题描述】:上下文我正在尝试更改产品名称属性的约束并将字段长度增加到300个字符。问题在src/PrestaShopBundle/Form... 查看详情