رفتن به مطلب

پست های پیشنهاد شده

سلام و امیدوارم حالتون خوب باشه همگی

 

من دارم روی یک ماژول کار میکنم که باید تو بخش back office محصولات به صورت یک هوک displayAdminProductExtra  باشه و مشکل من اینجاست که تو این حالت هم باید insert to db بشه هم امکان به روزرسانی موارد قبلی رو داشته باشه.
حالا من یک جدول و یک فرم توی تمپلیت خودم دارم که فیلد های  جدول قابل ویرایش هستن و فرم من هم برای اضافه کردن یک آیتم جدید بالای جدول قرار داره
از تگ فرم استفاده نکردم (یعنی از ajax کمک گرفتم) اگر تگ فرم بزارم در مورد فرم مل نمی کنه و اگر بر روی جدول بزارم مشکل اتنتیکشن میگیره از من.

<div id="product_moduleepos_advanced_stock" class="panel product-tab">

    <h3>Advanced Stock Manager</h3>

    <div class="row justify-content-between">
        <div class="col-10 col-lg-offset-1">
            <form method="post" action="{$link->getAdminLink('AdminProducts')}">
                <div class="form-row align-items-center">
                    <div class="col-sm-3">
                        <label class="sr-only" for="stockName">Stock Name</label>
                        <div class="input-group">
                            <div class="input-group-prepend">
                                <div class="input-group-text">@</div>
                            </div>
                            <input type="text" name="stock_name" class="form-control" id="stockName" placeholder="Stock Name">
                        </div>
                    </div>
                    <div class="col-sm-3">
                        <label class="sr-only" for="stockVolume">Volume</label>
                        <input type="text" name="stock_volume" class="form-control" id="stockVolume" placeholder="Stock Volume">
                    </div>
                    <div class="col-sm-2">
                        <label class="sr-only" for="stockUnit">Unit</label>
                        <div class="form-select">
                            <select name="stock_unit" id="stockUnit" class="form-control custom-select">
                                <option selected="">Select Unit</option>
                                    {foreach from=$units key="id_unit" item="unit"}
                                        <option value="{$unit['id_unit']}">{$unit['sign']}</option>
                                    {/foreach}
                            </select>
                        </div>
                    </div>
                    <div class="col-sm-2">
                        <label class="sr-only" for="stockCost">Cost</label>
                        <div class="input-group">
                            <input type="text" name="stock_cost" class="form-control" id="stockCost" placeholder="Stock Cost">
                            <div class="input-group-append">
                                <div class="input-group-text">£</div>
                            </div>
                        </div>
                    </div>
                    <div class="col-auto">
                        <button type="submit" name="addStock" class="btn btn-primary">Add Stock</button>
                        <input type="hidden" name="add_new_stock" value="true">
                    </div>
                </div>
            </form>
        </div>
    </div>
    <div class="row mt-5">
        <hr/>
        <div class="col-12">
            <table class="table table-striped table-hover">
                <thead>
                <tr>
                    <th>#</th>
                    <th>name</th>
                    <th>Cost</th>
                    <th>Volume</th>
                </tr>
                </thead>
                    <tbody>
                    <input name="submitStock" value="1" type="hidden" id="submitStock">
                    {foreach from=$stocks key='id_product' item='stock'}
                        <tr>
                            <th scope="row">{$stock['id']}</th>
                            <input type="hidden" name="updateId[]" value="{$stock['id']}">
                            <td class="active">
                                <input class="form-control" type="text" name="updateName[]" placeholder="Cost of stock"
                                       value="{$stock['name']}">
                            </td>
                            <td>
                                <input class="form-control" type="text" name="updateCost[]" placeholder="Cost of stock"
                                       value="{$stock['cost']}">
                            </td>
                            <td>
                                <div class="input-group">
                                    <input class="form-control" type="text" name="updateVolume[]"
                                           placeholder="Volume of stock"
                                           value="{$stock['volume']}">
                                    <div class="input-group-append">
                                        <button type="submit" name="submitForm" id="submitForm" class="btn btn-success">
                                            <i class="material-icons">check</i>
                                        </button>
                                    </div>
                                </div>
                            </td>
                        </tr>
                    {/foreach}
                    </tbody>
            </table>
        </div>
    </div>

</div>

مشکل اصلی وقتی که به هوک اکشن می رسم اونجا همه حالتای سابمیت رو با هم در نظر میگیره چه GET چه POST و اینکه نام روی دکمه هارو هم نمی فهمه که از طریق اون بتونم اطلاعات یک فرم مشخص بگیرم از تو صفحه. در نهایت حتا اسکریپت jquery رو هم نمیشناسه تا بتونم مقادیر یک input تغییر بدم و واقعن گیر کردم اگه می تونید کمک کنید.
ممنون
 

    /**
     * @param $params
     * @throws PrestaShopDatabaseException
     */
    public function hookActionProductUpdate($params)
    {


        if (
            empty($_POST['stock_name']) &&
            empty($_POST['stock_volume']) &&
            empty($_POST['stock_cost'])
        ) {
            $data = [];

            $data['id'] = Tools::getValue('updateId');
            $data['name'] = Tools::getValue('updateName');
            $data['cost'] = Tools::getValue('updateCost');
            $data['volume'] = Tools::getValue('updateVolume');

            $this->_updateStock($data, $params['id_product']);
        } else {
            $stock = [];

            $stock['name'] = Tools::getValue('stock_name');
            $stock['id_unit'] = Tools::getValue('stock_unit');
            $stock['volume'] = Tools::getValue('stock_volume');
            $stock['cost'] = Tools::getValue('stock_cost');
            $stock['id_product'] = $params['id_product'];

            $this->_insertStock($stock);
        }
    }

    /**
     * @param $params
     * @return string
     * @throws PrestaShopDatabaseException
     * @throws PrestaShopException
     */
    public function hookDisplayAdminProductsExtra($params)
    {
        $stocks = $this->_getAllStocksOfProduct($params['id_product']);

        $this->context->smarty->assign([
            'stocks' => $stocks,
            'units' => $this->_getAllUnits(),
        ]);

        return $this->display(__FILE__, 'views/templates/hook/admin/adminStockManager.tpl');
    }

 

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

در حال بارگذاری


  • کاربران آنلاین در این صفحه

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...