nimafam ارسال شده در اردیبهشت 27، 2020 گزارش Share ارسال شده در اردیبهشت 27، 2020 سلام و امیدوارم حالتون خوب باشه همگی من دارم روی یک ماژول کار میکنم که باید تو بخش 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'); } نقل قول لینک به دیدگاه به اشتراک گذاری در سایت های دیگر More sharing options...
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .