* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShopBundle\Controller\Admin; use PrestaShop\PrestaShop\Adapter\Product\AdminProductWrapper; use PrestaShop\PrestaShop\Adapter\Tools; use PrestaShopBundle\Model\Product\AdminModelAdapter as ProductAdminModelAdapter; use PrestaShopBundle\Security\Annotation\AdminSecurity; use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\HttpFoundation\Response; /** * @deprecated since 8.1 and will be removed in next major. * * Admin controller for suppliers page. */ class SupplierController extends FrameworkBundleAdminController { /** * refreshProductSupplierCombinationFormAction. * * @AdminSecurity("is_granted('create', request.get('_legacy_controller')) || is_granted('update', request.get('_legacy_controller'))") * * @param int $idProduct * @param int|string $supplierIds The suppliers ids separate by "-" * * @return string|Response */ public function refreshProductSupplierCombinationFormAction($idProduct, $supplierIds) { $adminProductWrapper = $this->get(AdminProductWrapper::class); $productAdapter = $this->get('prestashop.adapter.data_provider.product'); $response = new Response(); //get product $product = $productAdapter->getProduct((int) $idProduct); $suppliers = explode('-', $supplierIds); if ($supplierIds == 0) { return $response; } if (!is_object($product) || empty($product->id)) { $response->setStatusCode(400); return $response; } //Pre-save of supplier product, needed for well form generation $_POST['supplier_loaded'] = 1; foreach ($suppliers as $idSupplier) { $_POST['check_supplier_' . $idSupplier] = 1; } $adminProductController = $adminProductWrapper->getInstance(); $adminProductController->processSuppliers($idProduct); $modelMapper = new ProductAdminModelAdapter( $this->get('prestashop.adapter.legacy.context'), $this->get(AdminProductWrapper::class), $this->get(Tools::class), $this->get('prestashop.adapter.data_provider.product'), $this->get('prestashop.adapter.data_provider.supplier'), $this->get('prestashop.adapter.data_provider.warehouse'), $this->get('prestashop.adapter.data_provider.feature'), $this->get('prestashop.adapter.data_provider.pack'), $this->get('prestashop.adapter.shop.context'), $this->get('prestashop.adapter.data_provider.tax'), $this->get('prestashop.adapter.legacy.configuration'), $this->get('router') ); $allFormData = $modelMapper->getFormData($product); $form = $this->createFormBuilder($allFormData); $simpleSubForm = $form->create('step6', FormType::class); foreach ($suppliers as $idSupplier) { if ($idSupplier == 0 || !is_numeric($idSupplier)) { continue; } $simpleSubForm->add('supplier_combination_' . $idSupplier, 'Symfony\Component\Form\Extension\Core\Type\CollectionType', [ 'entry_type' => 'PrestaShopBundle\Form\Admin\Product\ProductSupplierCombination', 'entry_options' => [ 'id_supplier' => $idSupplier, ], 'prototype' => true, 'allow_add' => true, 'required' => false, 'label' => $this->get('prestashop.adapter.data_provider.supplier')->getNameById($idSupplier), ]); } $form->add($simpleSubForm); return $this->render('@Product/ProductPage/Forms/form_supplier_combination.html.twig', [ 'suppliers' => $suppliers, 'form' => $form->getForm()['step6']->createView(), ]); } }