我正在尝试在Magento客户注册页面上进行组选择下拉列表工作。我已经完成了以下所有工作:
将以下代码插入template / persistent / customer / form / register.phtml:
<label for="group_id" style='margin-top:15px;'><?php echo $this->__('Which group do you belong to? (select "Pet Owner" if you are uncertain)') ?><span class="required">*</span></label>
<div style='clear:both'><p style='color:red;'>Note: DVM/DACVO and Institution accounts require administrative approval.</p></div>
<div class="input-box" style='margin-bottom:10px;'>
<select style='border:1px solid gray;' name="group_id" id="group_id" title="<?php echo $this->__('Group') ?>" class="validate-group required-entry input-text" />
<?php $groups = Mage::helper('customer')->getGroups()->toOptionArray(); ?>
<?php foreach($groups as $group){ ?>
<?php if ($group['label']=="Pet Owner" || $group['label']=="DVM / DACVO" || $group['label']=="Institution"){?>
<option value="<?php print $group['value'] ?>"><?php print $group['label'] ?></option>
<?php } ?>
<?php } ?>
</select>
</div>
然后在createPostAction()中的/app/code/local/Mage/Customer/controllers/AccountController.php中进行以下操作:
$customer->setGroupId($this->getRequest()->getPost(‘group_id’));
最后在/app/code/local/Mage/Customer/etc/config.xml中添加了组ID:
<fieldsets>
<customer_account>
<prefix>
<create>1</create>
<update>1</update>
<name>1</name>
</prefix>
<firstname>
<create>1</create>
<update>1</update>
<name>1</name>
</firstname>
<middlename>
<create>1</create>
<update>1</update>
<name>1</name>
</middlename>
<lastname>
<create>1</create>
<update>1</update>
<name>1</name>
</lastname>
<suffix>
<create>1</create>
<update>1</update>
<name>1</name>
</suffix>
<email>
<create>1</create>
<update>1</update>
</email>
<password>
<create>1</create>
</password>
<confirmation>
<create>1</create>
</confirmation>
<dob>
<create>1</create>
<update>1</update>
</dob>
<group_id><create>1</create><update>1</update></group_id>
<taxvat>
<create>1</create>
<update>1</update>
</taxvat>
<gender>
<create>1</create>
<update>1</update>
</gender>
</customer_account>
我已经多次测试过,每个客户仍然被添加为默认客户群。你能看出我做错了吗?
答案 0 :(得分:0)
> node ./node_modules/mocha/bin/mocha test/lifecycle.test.js test/integration/**/*.test.js
√ OtherModel method() should do something: 17ms
1) User find() should return an array of users
'Done.'
PS C:\repos\myproject>
});
将此脚本添加到您的js文件中。
<script type="text/javascript">
$(document).on('change','#country',function() {
var param = 'country='+$('#country').val();
$.ajax({
showLoader: true,
url: YOUR_URL_HERE,
data: param,
type: "GET",
dataType: 'json'
}).done(function (data) {
//data.value has the array of regions
});
在块中使用\ Magento \ Customer \ Model \ ResourceModel \ Group \ Collection和以上代码。
public function getCountries()
{
$country = $this->directoryBlock->getCountryHtmlSelect();
return $country;
}
然后在phtml文件中添加以上字段。 我知道这是一篇过时的文章,但是请提供解决方案以防万一有人需要。
答案 1 :(得分:-1)
使用/app/code/local/Mage/Customer/controllers/AccountController.php创建自己的模块实例。如果模块名称为Custom和namespace Mymodule,请在congig.xml中添加以下代码。
<global>
<fieldsets>
<customer_account>
<group_id><create>1</create><update>1</update></group_id>
</customer_account>
</fieldsets>
</global>
<frontend>
<routers>
<customer>
<args>
<modules>
<Mymodule_Custom before="Mage_Customer_AccountController">Mymodule_Custom</Mymodule_Custom>
</modules>
</args>
</customer>
</routers>
这将覆盖您的AccountController。现在找到控制器的以下代码。
<?php
require_once(Mage::getModuleDir('controllers','Mage_Customer').DS.'AccountController.php');
class Mymodule_Custom_AccountController extends Mage_Customer_AccountController
{
public function createPostAction()
{
$session = $this->_getSession();
if ($session->isLoggedIn()) {
$this->_redirect('*/*/');
return;
}
$session->setEscapeMessages(true); // prevent XSS injection in user input
if (!$this->getRequest()->isPost()) {
$errUrl = $this->_getUrl('*/*/create', array('_secure' => true));
$this->_redirectError($errUrl);
return;
}
$customer = $this->_getCustomer();
try {
$errors = $this->_getCustomerErrors($customer);
if (empty($errors)) {
if($this->getRequest()->getPost('group_id')){
$customer->setGroupId($this->getRequest()->getPost('group_id'));
} else {
$customer->getGroupId();
}
$customer->cleanPasswordsValidationData();
$customer->save();
$this->_dispatchRegisterSuccess($customer);
$this->_successProcessRegistration($customer);
return;
} else {
$this->_addSessionError($errors);
}
} catch (Mage_Core_Exception $e) {
$session->setCustomerFormData($this->getRequest()->getPost());
if ($e->getCode() === Mage_Customer_Model_Customer::EXCEPTION_EMAIL_EXISTS) {
$url = $this->_getUrl('customer/account/forgotpassword');
$message = $this->__('There is already an account with this email address. If you are sure that it is your email address, <a href="%s">click here</a> to get your password and access your account.', $url);
$session->setEscapeMessages(false);
} else {
$message = $e->getMessage();
}
$session->addError($message);
} catch (Exception $e) {
$session->setCustomerFormData($this->getRequest()->getPost())
->addException($e, $this->__('Cannot save the customer.'));
}
$errUrl = $this->_getUrl('*/*/create', array('_secure' => true));
$this->_redirectError($errUrl);
}
}
?>
希望这对你有用。