Мне нужно добавить несколько полей в продукт prestashop (код HSN и еще одно). Я очень новичок в prestashop, и нет никакого руководства, чтобы сделать то же самое с последней сборкой 1.7.
Я следовал за ответами, сделанными на stackoverflow, и я могу показать поля формы, но не могу сохранить и проверить значение.
Вот фрагмент кода, который я использовал (я предпочел это, потому что он использует хуки).
use PrestaShopBundle\Form\Admin\Type\TranslateType;
use PrestaShopBundle\Form\Admin\Type\FormattedTextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\FormType;
public function hookDisplayAdminProductsExtra($params)
{
$productAdapter = $this->get('prestashop.adapter.data_provider.product');
$product = $productAdapter->getProduct($params['id_product']);
$formData = [
'ebay_reference' => $product->ebay_reference,
];
$formFactory = $this->get('form.factory');
$form = $formFactory->createBuilder(FormType::class, $formData)
->add('ebay_reference', TranslateType::class, array(
'required' => false,
'label' => 'Ebay reference',
'locales' => Language::getLanguages(),
'hideTabs' => true,
'required' => false
))
->getForm()
;
return $this->get('twig')->render(_PS_MODULE_DIR_.'MyModule/views/display-admin-products-extra.html.twig', [
'form' => $form->createView()
]) ;
}
public function hookActionAdminProductsControllerSaveBefore($params)
{
$productAdapter = $this->get('prestashop.adapter.data_provider.product');
$product = $productAdapter->getProduct($_REQUEST['form']['id_product']);
foreach(Language::getLanguages() as $language){
$product->ebay_reference[ $language['id_lang'] ] =
$_REQUEST['form']['ebay_reference'][$language['id_lang']];
}
$product->save();
}
Я застрял в части сохранения данных. Нужно некоторое руководство к нему рекомендуемым способом. Также, чтобы помочь в этом, вам нужно прочитать код любого модуля, входящего в комплект prestashop.
Добавить поле в товаре Prestashop 1.7