我在前端和后端创建了一个名为供应商投诉的自定义模块,我正在获取表单,但是当我填写详细信息并单击“保存”时,我收到致命错误。
我的Config.xml文件:
<?xml version="1.0"?>
<config>
<modules>
<Blazedream_VendorComplaints>
<version>0.1.0</version>
</Blazedream_VendorComplaints>
</modules>
<frontend>
<routers>
<vendorcomplaints>
<use>standard</use>
<args>
<module>Blazedream_VendorComplaints</module>
<frontName>vendorcomplaints</frontName>
</args>
</vendorcomplaints>
</routers>
<layout>
<updates>
<vendorcomplaints>
<file>vendorcomplaints.xml</file>
</vendorcomplaints>
</updates>
</layout>
</frontend>
<global>
<helpers>
<vendorcomplaints>
<class>Blazedream_VendorComplaints_Helper</class>
</vendorcomplaints>
</helpers>
<blocks>
<vendorcomplaints>
<class>Blazedream_VendorComplaints_Block</class>
</vendorcomplaints>
</blocks>
<models>
<vendorcomplaints>
<class>Blazedream_VendorComplaints_Model</class>
<resourceModel>VendorComplaints_mysql4</resourceModel>
</vendorcomplaints>
<vendorcomplaints_mysql4>
<class>Blazedream_VendorComplaints_Model_Mysql4</class>
<entities>
<complaints>
<table>vendor_complaints</table>
</complaints>
</entities>
</vendorcomplaints_mysql4>
</models>
<resources>
<vendorcomplaints_setup>
<setup>
<module>Blazedream_VendorComplaints</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</vendorcomplaints_setup>
<vendorcomplaints_write>
<connection>
<use>core_write</use>
</connection>
</vendorcomplaints_write>
<vendorcomplaints_read>
<connection>
<use>core_read</use>
</connection>
</vendorcomplaints_read>
</resources>
</global>
<admin>
<routers>
<vendorcomplaints>
<use>admin</use>
<args>
<module>Blazedream_VendorComplaints</module>
<frontName>vendorcomplaints</frontName>
</args>
</vendorcomplaints>
</routers>
</admin>
<adminhtml>
<menu>
<marketplace>
<children>
<complaints module="vendorcomplaints">
<title>Manage Complaints</title>
<sort_order>0</sort_order>
<action>admin_vendorcomplaints/adminhtml_complaints</action>
</complaints>
</children>
</marketplace>
</menu>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<vendorcomplaints>
<title>Complaints Module</title>
<sort_order>200</sort_order>
</vendorcomplaints>
</children>
</admin>
</resources>
</acl>
<layout>
<updates>
<vendorcomplaints>
<file>vendorcomplaints.xml</file>
</vendorcomplaints>
</updates>
</layout>
</adminhtml>
</config>
我的控制器文件: 本地/ Blazedream / VendorComplaints /控制器/ indexcontroller.php
<?php
class Blazedream_VendorComplaints_IndexController extends Mage_Core_Controller_Front_Action{
public function IndexAction() {
$this->checkurlForVendor();
$this->loadLayout();
$this->getLayout()->getBlock("head")->setTitle($this->__("Seller Complaints"));
$breadcrumbs = $this->getLayout()->getBlock("breadcrumbs");
$breadcrumbs->addCrumb("home", array(
"label" => $this->__("Home Page"),
"title" => $this->__("Home Page"),
"link" => Mage::getBaseUrl()
));
$breadcrumbs->addCrumb("Seller Complaints", array(
"label" => $this->__("Seller Complaints"),
"title" => $this->__("Seller Complaints")
));
$this->renderLayout();
}
public function saveAction()
{
$post_data=$this->getRequest()->getPost();
$roleId = Mage::getSingleton('customer/session')->getCustomerGroupId();
$role = Mage::getSingleton('customer/group')->load($roleId)->getData('customer_group_code');
$role = strtolower($role);
$post_data['customer_group']=$role;
$customerName=$post_data['name'];
$customerEmail=$post_data['email_id'];
if ($post_data) {
try {
$model = Mage::getModel("vendorcomplaints/complaints")
->addData($post_data)
->setId($this->getRequest()->getParam("id"))
->save();
Mage::getSingleton('core/session')->addSuccess('Vendor Complaints was successfully saved');
$this->_redirect("*/*/");
return;
}
catch (Exception $e) {
Mage::getSingleton("adminhtml/session")->addError($e->getMessage());
Mage::getSingleton("adminhtml/session")->setComplaintsData($this->getRequest()->getPost());
$this->_redirect("*/*/edit", array("id" => $this->getRequest()->getParam("id")));
return;
}
}
$this->_redirect("*/*/");
}
protected function _getSession()
{
return Mage::getSingleton('customer/session');
}
protected function checkVendorIsActive()
{
return Mage::helper('marketplace')->getVendorStatus();
}
function checkvendorisLogged(){
$session = $this->_getSession();
if (!$session->isLoggedIn()) {
Mage::getSingleton('customer/session')->addError(Mage::helper('marketplace')->__("Please Login to your account"));
$this->_redirect('sellerlogin');
}
}
public function checkurlForVendor()
{
$session = $this->_getSession();
if (!$session->isLoggedIn()) {
Mage::getSingleton('customer/session')->addError(Mage::helper('marketplace')->__("Please login as seller"));
$this->_redirect('sellerlogin');
} else {
$isEnable = Mage::getStoreConfig('marketplace/general/enable');
$isModuleEnabled = Mage::helper('core')->isModuleOutputEnabled('NextBits_Marketplace');
$isActive = $this->checkVendorIsActive();
$action_name = trim($this->getRequest()->getActionName());
if ($isModuleEnabled && $isEnable){
if ($isActive == 0 || $isActive == "") {
Mage::getSingleton('customer/session')->addError(Mage::helper('marketplace')->__("Seller not activated yet, or you are not a seller."));
$this->_redirect('marketplace/vendor/dashboard/');
}
} else {
Mage::getSingleton('customer/session')->addError(Mage::helper('marketplace')->__("Marketplace Module is disable."));
$this->_redirect('marketplace/vendor/dashboard/');
}
}
}
}
我的阻止档案: 本地/ Blazedream / VendorComplaints /砌块/ index.php的
<?php
class Blazedream_VendorComplaints_Block_Index extends Mage_Core_Block_Template{
public function __construct(){
parent::__construct();
$this->setTemplate('vendorcomplaints/index.phtml');
}
protected function _prepareLayout()
{
$this->setChild('save_button',
$this->getLayout()->createBlock('adminhtml/widget_button')
->setData(array(
'label' => Mage::helper('vendorcomplaints')->__('Submit'),
'onclick' => 'vendorComplaints.submit()',
'class' => 'save'
))
);
parent::_prepareLayout();
}
public function getBackButtonHtml()
{
return $this->getChildHtml('back_button');
}
public function getCancelButtonHtml()
{
return $this->getChildHtml('reset_button');
}
public function getSaveButtonHtml()
{
return $this->getChildHtml('save_button');
}
public function getSaveAndEditButtonHtml()
{
return $this->getChildHtml('save_and_edit_button');
}
public function getDeleteButtonHtml()
{
return $this->getChildHtml('delete_button');
}
public function getDuplicateButtonHtml()
{
return $this->getChildHtml('duplicate_button');
}
public function getValidationUrl()
{
return $this->getUrl('*/*/validate', array('_current'=>true));
}
public function getSaveUrl()
{
return $this->getUrl('*/*/save', array('_current'=>true, 'back'=>null));
}
}
用于创建表单的表单块文件: OCAL / Blazedream / VendorComplaints /砌块/投诉/编辑/ form.php的
<?php
class Blazedream_VendorComplaints_Block_Complaints_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{
protected function _prepareForm()
{
$customer = Mage::getSingleton('customer/session')->getCustomer();
$customerId=$customer->getId();
$data = Mage::getModel('marketplace/vendor')
->getCollection()
->addFieldToFilter('customer_id',$customerId)
->getData();
$cus_name=$customer->getName();
$emailId=$customer->getEmail();
$form = new Varien_Data_Form();
$this->setForm($form);
$fieldset = $form->addFieldset("vendorcomplaints_form", array("legend"=>Mage::helper("vendorcomplaints")->__("Item information")));
$three_columns = "col-xs-12 col-sm-4 col-md-4 col-lg-4";
$one_column = "col-xs-12 col-sm-12 col-md-12 col-lg-12";
$fieldset->addField("vendor_complaints_id", "hidden", array(
"label" => Mage::helper("vendorcomplaints")->__("Id"),
"name" => "vendor_complaints_id",
));
$fieldset->addField("name", "text", array(
"label" => Mage::helper("vendorcomplaints")->__("First Name"),
"name" => "name",
"class"=> "required-entry",
'readonly'=>true,
'required' => true,
'value' =>$cus_name,
'container_class' => $three_columns
));
$fieldset->addField("order_id", "text", array(
"label" => Mage::helper("vendorcomplaints")->__("Order Id"),
"name" => "order_id",
'required' => true,
"class"=> "required-entry",
'container_class' => $three_columns
));
$fieldset->addField("email_id", "text", array(
"label" => Mage::helper("vendorcomplaints")->__("Email Id"),
"name" => "email_id",
'value'=>$emailId,
'required' => true,
'readonly'=>true,
"class"=> "required-entry validate-email",
'container_class' => $three_columns
));
$fieldset->addField("reason", "textarea", array(
"label" => Mage::helper("vendorcomplaints")->__("Reason"),
"name" => "reason",
'required' => true,
"class"=> "required-entry",
'container_class' => $one_column
));
if (Mage::getSingleton("adminhtml/session")->getComplaintsData())
{
$form->setValues(Mage::getSingleton("adminhtml/session")->getComplaintsData());
Mage::getSingleton("adminhtml/session")->setComplaintsData(null);
}
elseif(Mage::registry("complaints_data")) {
$form->setValues(Mage::registry("complaints_data")->getData());
}
return parent::_prepareForm();
}
}
我的模型文件:local / Blazedream / VendorComplaints / Model / Complaints.php
<?php
class Blazedream_VendorComplaints_Model_Complaints extends Mage_Core_Model_Abstract
{
protected function _construct(){
$this->_init("vendorcomplaints/complaints");
}
}
本地/ Blazedream / VendorComplaints /型号/ Mysql4 / Complaints.php
<?php
class Blazedream_VendorComplaints_Model_Mysql4_Complaints extends Mage_Core_Model_Mysql4_Abstract
{
protected function _construct()
{
$this->_init("vendorcomplaints/complaints", "vendor_complaints_id");
}
}
本地/ Blazedream / VendorComplaints /型号/ Mysql4 /投诉/ Collection.php
<?php
class Blazedream_VendorComplaints_Model_Mysql4_Complaints_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
public function _construct(){
$this->_init("vendorcomplaints/complaints");
}
}
我的sql安装文件:local / Blazedream / VendorComplaints / sql / vendorcomplaints_setup
<?php
$installer = $this;
$installer->startSetup();
$sql=<<<SQLTEXT
create table vendor_complaints(vendor_complaints_id int not null auto_increment,name varchar(1000) not null,order_id varchar(100) NOT NULL,email_id varchar(100) not null,reason text,customer_group varchar(100) not null, primary key(vendor_complaints_id));
insert into vendor_complaints values(1,'tablename1','3','www@gmail.com','asxasxsx','sadasd');
SQLTEXT;
$installer->run($sql);
$installer->endSetup();
之后我已经加载了xml文件和查看文件..我收到了投诉表单,但是当我输入详细信息并单击“保存”按钮时,我收到致命错误。我不知道我在哪里犯了错误。
任何人都可以帮我找到问题????
答案 0 :(得分:0)
在IndexController.php中更改这些行
$model = Mage::getModel("vendorcomplaints/complaints")
->addData($post_data)
->setId($this->getRequest()->getParam("id"))
->save();
要
$id = $this->getRequest()->getParam("id");
$model = Mage::getModel("vendorcomplaints/complaints")->load($id)->addData($post_data);
$model->setId($id)->save();
因为您需要在更新数据之前加载表行id。