как установить уникальное поле в моем пользовательском модуле
Я использую magento 1.9.2.4
Мне нужно одно уникальное и обязательное поле в моей форме пользовательского модуля
Я использую приведенный ниже код для поля формы
class Test_Brand_Block_Adminhtml_Brand_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{
protected function _prepareForm()
{
$model = Mage::registry('test_brand');
$fieldset->addField('option_identifier', 'text', array(
'name' => 'option_identifier',
'label' => Mage::helper('checkout')->__('Option Identifier'),
'title' => Mage::helper('checkout')->__('Option Identifier'),
'required' => true,
));
}
}
1
Author: Prashant Valanda, 2016-12-15
2 answers
Используя 'required' => true,
в поле формы, вы можете сделать поле обязательным. Но вы не можете сделать значение поля уникальным без пользовательского кода.
Вы должны создать уникальное поле базы данных, а также сначала проверить свое действие после публикации, является ли это поле уникальным или нет, если оно не уникально, то создайте исключение
public function postAction()
{
$post = $this->getRequest()->getPost();
if ( $post ) {
if($this->getRequest()->getPost('your-field')){
$collection = Mage::getModel('yourmodel/yourmodel')->getCollection();
$collection->addFieldToFilter('your-field',$this->getRequest()->getPost('your-field'));
if(count($collection)){
Mage::getSingleton('customer/session')->addError(Mage::helper('yourhelper')->__('your-field name is not unique'));
$this->_redirect('*/*/');
return;
}
}
}
}
Выше приведен пример, используйте его в качестве ссылки, сделайте это в соответствии с вашими потребностями
1
Author: Prashant Valanda, 2016-12-15 08:58:17
Лучший способ:
1) Добавьте это в исходную модель.
protected function _construct()
{
$this->_init("your_module/your_model", "super_id");
$this->addUniqueField(array(
'field' => 'name',
'title' => Mage::helper('loyalty')->__('This name has already been taken.')
));
}
2: Попробуйте перехватить исключения из исключения Mage_Core_Exception
try {
$model = Mage::getModel("your_module/your_model")->load('some_id');
$model->setName('I am bad man!');
$model->save();
} catch (Mage_Core_Exception $e) {
Mage::getSingleton("adminhtml/session")->addError(
$e->getMessage()
);
1
Author: Arni, 2018-03-08 20:20:09