是否可以使用Magento中的页面来获得可自定义的联系表单?

时间:2012-03-05 10:25:59

标签: php magento

是否可以使用Magento中的页面来获得可自定义的联系表单?

如果可能的话:

  1. 我应该采取什么行动来支持这个?
  2. 是否可以使用我的自定义表单元素,还是需要使用Magento标准?
  3. 表单我正在使用我的页面:

    <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 个答案:

答案 0 :(得分:1)

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字段。

表单需要发布到网址/contacts/index/post 在Magento中生成URL的最佳方法是echo Mage::getUrl('contacts/index/post')

发布的数据通过{{ var data}}变量在联系人电子邮件中提供 电子邮件模板可以通过 System&gt;下的管理界面进行调整。交易电子邮件。 默认情况下,模板非常基本,但可以轻松扩展。例如,要将名为q5_otherOptions的字段的值添加到电子邮件中,请使用`{{var data.q5_otherOptions}}作为占位符。

答案 1 :(得分:0)

操作必须为$this->getUrl('module/controller/action'),其中module是您的自定义模块的名称,controller是您模块中的控制器,而action是其中的操作控制器。您需要为此创建自己的自定义模块。您应该阅读http://alanstorm.com/category/magento的前几篇文章,了解如何执行此操作。

答案 2 :(得分:0)

这是我写的一篇文章,详细介绍了一个非常基本的自定义联系表单设置。这可能会也可能不符合您的要求,但如果您只想在联系表单中添加一些其他字段,这是一个不错的方法。

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