Можно ли использовать страницы в Magento, чтобы иметь настраиваемую контактную форму? - PullRequest
0 голосов
/ 05 марта 2012

Можно ли использовать страницы в Magento, чтобы иметь настраиваемую контактную форму?

Если это возможно:

  1. Какое действие я должен вызвать, чтобы поддержать это?
  2. Можно ли использовать мои элементы формы для настройки или мне нужно использовать Magento?Стандарты?

Форма, которую я использую на своей странице:

<form action="" method="post">
  <input type="hidden" name="formID" value="20642064378453">
  <div class="form-all">
    <ul class="form-section">
      <li class="form-line" id="id_8">
        <label class="form-label-left" id="label_8" for="input_8"> Full Name </label>
        <div id="cid_8" class="form-input"><span class="form-sub-label-container"><input class="form-textbox" type="text" size="10" name="q8_fullName8[first]" id="first_8">
            <label class="form-sub-label" for="first_8" id="sublabel_first"> First Name </label></span><span class="form-sub-label-container"><input class="form-textbox" type="text" size="15" name="q8_fullName8[last]" id="last_8">
            <label class="form-sub-label" for="last_8" id="sublabel_last"> Last Name </label></span>
        </div>
      </li>
      <li class="form-line" id="id_1">
        <label class="form-label-left" id="label_1" for="input_1">
          Name<span class="form-required">*</span>
        </label>
        <div id="cid_1" class="form-input">
          <input type="text" class="form-textbox validate[required]" id="input_1" name="q1_name" size="20">
        </div>
      </li>
      <li class="form-line" id="id_3">
        <label class="form-label-left" id="label_3" for="input_3">
          Email<span class="form-required">*</span>
        </label>
        <div id="cid_3" class="form-input">
          <input type="text" class="form-textbox validate[required]" id="input_3" name="q3_email" size="20">
        </div>
      </li>
      <li class="form-line" id="id_4">
        <label class="form-label-left" id="label_4" for="input_4"> Topics </label>
        <div id="cid_4" class="form-input">
          <select class="form-dropdown" style="width:150px" id="input_4" name="q4_topics">
            <option>  </option>
            <option value="Option 1"> Option 1 </option>
            <option value="Option 2"> Option 2 </option>
            <option value="Option 3"> Option 3 </option>
          </select>
        </div>
      </li>
      <li class="form-line" id="id_5">
        <label class="form-label-left" id="label_5" for="input_5"> Other Options </label>
        <div id="cid_5" class="form-input">
          <div class="form-single-column"><span class="form-radio-item" style="clear:left;"><input type="radio" class="form-radio" id="input_5_0" name="q5_otherOptions" value="Option 1">
              <label for="input_5_0"> Option 1 </label></span><span class="clearfix"></span><span class="form-radio-item" style="clear:left;"><input type="radio" class="form-radio" id="input_5_1" name="q5_otherOptions" value="Option 2">
              <label for="input_5_1"> Option 2 </label></span><span class="clearfix"></span><span class="form-radio-item" style="clear:left;"><input type="radio" class="form-radio" id="input_5_2" name="q5_otherOptions" value="Option 3">
              <label for="input_5_2"> Option 3 </label></span><span class="clearfix"></span>
          </div>
        </div>
      </li>
      <li class="form-line" id="id_7">
        <label class="form-label-left" id="label_7" for="input_7"> Message </label>
        <div id="cid_7" class="form-input">
          <textarea id="input_7" class="form-textarea" name="q7_message" cols="40" rows="6"></textarea>
        </div>
      </li>
      <li class="form-line" id="id_2">
        <div id="cid_2" class="form-input-wide">
          <div style="margin-left:156px" class="form-buttons-wrapper">
            <button id="input_2" type="submit" class="form-submit-button">
              Submit Form
            </button>
          </div>
        </div>
      </li>
      <li style="display:none">
        Should be Empty:
        <input type="text" name="website" value="">
      </li>
    </ul>
  </div>
  <input type="hidden" id="simple_spc" name="simple_spc" value="20642064378453-20642064378453">
  <script type="text/javascript">
  document.getElementById("si" + "mple" + "_spc").value = "20642064378453-20642064378453";
  </script>
</form>

Спасибо!

Ответы [ 3 ]

1 голос
/ 05 марта 2012

Метод Mage_Contacts_IndexController::postAction() может обрабатывать пользовательские контактные формы.
Размещенные данные должны соответствовать некоторым основным требованиям:

// Excerpt from Mage_Contacts_IndexController::postAction()

$postObject = new Varien_Object();
$postObject->setData($post);
$error = false;

if (!Zend_Validate::is(trim($post['name']) , 'NotEmpty')) {
    $error = true;
}
if (!Zend_Validate::is(trim($post['comment']) , 'NotEmpty')) {
    $error = true;
}
if (!Zend_Validate::is(trim($post['email']), 'EmailAddress')) {
    $error = true;
}
if (Zend_Validate::is(trim($post['hideit']), 'NotEmpty')) {
    $error = true;
}
if ($error) {
    throw new Exception();
}

Этот код показывает, по каким критериям ваша форма удовлетворяет вам, действие контроллера работает с вашими данными из коробки.

Прежде всего, данные должны быть опубликованы (не отправляются через GET).
Затем должны присутствовать непустое поле name, поле email (с синтаксически корректным адресом электронной почты), непустое поле hideit и поле comment.

Форма должна быть отправлена ​​на URL /contacts/index/post.
Лучший способ создать URL в Magento - это echo Mage::getUrl('contacts/index/post').

Опубликованные данные доступны в электронном письме контактов через переменную {{ var data}}.
Шаблон электронной почты можно настроить через интерфейс администратора в разделе Система> Транзакционные электронные письма . По умолчанию шаблон очень простой, но может быть легко расширен. Например, чтобы добавить значение поля с именем q5_otherOptions к электронному письму, используйте `{{var data.q5_otherOptions}} в качестве заполнителя.

0 голосов
/ 06 марта 2012

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

http://www.magentocommerce.com/boards/viewthread/262835/

0 голосов
/ 05 марта 2012

Действие должно быть $this->getUrl('module/controller/action'), где module - это имя вашего пользовательского модуля, controller - это контроллер в вашем модуле, а action - это действие в этом контроллере.Вы должны сделать свой собственный модуль для этого.Вы должны прочитать первые несколько статей на http://alanstorm.com/category/magento, чтобы узнать, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...