Magento, передавая название продукта в контактную форму - PullRequest
3 голосов
/ 26 января 2012

Здравствуйте, новичок в Magento, я плохо знаю термины и имена, но я постараюсь объяснить это настолько ясно, насколько смогу.

В настоящее время я работаю над настройкой контактной формы Magento , чтобы иметь возможность собирать некоторые данные от пользователей на странице просмотра продукта .
Чтобы быть более интересным, в форме также должны быть отправлены некоторые данные о продукте, на котором администратор размещает его, конкретно Название продукта
Не все продукты будут иметь эту форму, только продукты, которые доступны для поставки в различных (в настоящее время недоступных) цветах и ​​размерах.
Я скопировал контактную форму Magento в свой Layout->Templates->contact->form.phtml. Внедрил его в одну из страниц продуктов, вставив: <br> Magento Admin Panel-Catalog-Menage Categories-OneOfTheProducts-edit-<b>Custom layout update</b>
следующая ссылка xml:

<reference> 
  <block type="core/template" name="customer_request"  
   template="contacts/form.phtml"/>
</reference>

Протестировано, и оно работает, но администратору все еще приходится делать это в xml, размещая во многих продуктах текстовое поле Обновление пользовательского макета, но это не является частью этого вопроса.
Форма Magento имеет следующие поля: имя, адрес электронной почты, телефон, комментарий.
Однако мне нужно отправить еще один параметр в postAction действие Mage_Contacts_IndexController, и это имя продукта.

Вопрос
Как я могу получить название продукта в форме контакта со страницы продукта, может ли этот дочерний блок знать о содержимом страницы, в которую встраивается? Есть ли какая-то глобальная функция в Magento, которую я могу использовать и как передать этот параметр в контроллер, если я использую скрытое поле ввода или еще ...?

Любая ссылка или фрагмент кода будет означать для меня мир

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Решение

В form.phtml добавил этот фрагмент кода в новое значение скрытого поля, он получает ключ / значения URL-адреса текущей страницы, затем загружает объект модели, передавая значениеof "id":

<?php $productId=$this->getRequest()->getParams();   
$model = Mage::getModel('catalog/product');  
$_product = $model->load($productId["id"]);   
echo $_product->getName(); ?>

Добавлен новый var в шаблон электронной почты, ссылающийся на это значение скрытого поля, также эта часть кода будет хорошим кандидатом для размещения в классе помощников.

1 голос
/ 17 сентября 2015

Другим способом будет использование реестра Magento:

$_product = Mage::registry('current_product');

В этом случае нет необходимости загружать другую модель базы данных, что приводит к загрузке базы данных. См. здесь и здесь .

...