I'm using Magento 1.9.0.1 and i'm working on new custom magento extension.
I've created a custom page in the Admin panel and here is how it looks:
As you can see i've created a butoon Create new SMS Rule
, when i click on in i got the following error:
So now let me show you what i have in the extension files so you can help me out resolve this problem.
I have in: /app/code/community/VivasIndustries/SmsNotification/etc/config.xml:
<?xml version="1.0"?>
<config>
<modules>
<VivasIndustries_SmsNotification>
<version>0.1.0</version>
</VivasIndustries_SmsNotification>
</modules>
<global>
<models>
<smsnotification>
<class>VivasIndustries_SmsNotification_Model</class>
<resourceModel>vivasindustries_smsnotification_resource</resourceModel>
</smsnotification>
<vivasindustries_smsnotification_resource>
<class>VivasIndustries_SmsNotification_Model_Resource</class>
<entities>
<smsnotification>
<table>VivasIndustries_SmsNotification</table>
</smsnotification>
</entities>
</vivasindustries_smsnotification_resource>
</models>
<resources>
<smsnotification_setup>
<setup>
<module>VivasIndustries_SmsNotification</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</smsnotification_setup>
<smsnotification_read>
<connection>
<use>core_read</use>
</connection>
</smsnotification_read>
<smsnotification_write>
<connection>
<use>core_write</use>
</connection>
</smsnotification_write>
</resources>
<events>
<sales_order_save_after>
<observers>
<vivasindustries_smsnotification>
<class>smsnotification/observer</class>
<method>orderSaved</method>
</vivasindustries_smsnotification>
</observers>
</sales_order_save_after>
</events>
<helpers>
<smsnotification>
<class>VivasIndustries_SmsNotification_Helper</class>
</smsnotification>
</helpers>
<blocks>
<smsnotification>
<class>VivasIndustries_SmsNotification_Block</class>
</smsnotification>
</blocks>
</global>
<adminhtml>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<system>
<children>
<config>
<children>
<vivas>
<title>Vivas - All</title>
</vivas>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</adminhtml>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<VivasIndustries_SmsNotification before="Mage_Adminhtml">VivasIndustries_SmsNotification_Adminhtml</VivasIndustries_SmsNotification>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
Here is what i have in: /app/code/community/VivasIndustries/SmsNotification/Block/Adminhtml/Sales/Status.php:
<?php
class VivasIndustries_SmsNotification_Block_Adminhtml_Sales_Status extends Mage_Adminhtml_Block_Widget_Grid_Container
{
public function __construct()
{
$this->_blockGroup = 'smsnotification';
$this->_controller = 'adminhtml_sales_status';
$this->_headerText = Mage::helper('smsnotification')->__('Send SMS on Order Status Changes');
$this->_addButtonLabel = Mage::helper('smsnotification')->__('Create new SMS Rule');
parent::__construct();
}
protected function _prepareLayout()
{
$this->setChild( 'grid',
$this->getLayout()->createBlock( $this->_blockGroup.'/' . $this->_controller . '_grid',
$this->_controller . '.grid')->setSaveParametersInSession(true) );
return parent::_prepareLayout();
}
}
Here is what i have in: /app/code/community/VivasIndustries/SmsNotification/Block/Adminhtml/Sales/Status/Grid.php:
<?php
class VivasIndustries_SmsNotification_Block_Adminhtml_Sales_Status_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
public function __construct()
{
parent::__construct();
$this->setId('smsnotification_grid');
$this->setDefaultSort('id');
$this->setDefaultDir('DESC');
$this->setSaveParametersInSession(true);
$this->setUseAjax(true);
}
protected function _prepareCollection()
{
$collection = Mage::getResourceModel('smsnotification/smsnotification_collection');
$this->setCollection($collection);
return parent::_prepareCollection();
}
protected function _prepareColumns()
{
$this->addColumn('id', array(
'header' => Mage::helper('smsnotification')->__('ID'),
'align' =>'right',
'width' => '50px',
'index' => 'id',
));
$this->addColumn('Receiver', array(
'header' => Mage::helper('smsnotification')->__('Receiver'),
'align' =>'left',
'index' => 'Receiver',
));
$this->addColumn('Phone', array(
'header' => Mage::helper('smsnotification')->__('Phone'),
'align' =>'left',
'index' => 'Phone',
));
$this->addColumn('Date', array(
'header' => Mage::helper('smsnotification')->__('Date'),
'align' =>'left',
'index' => 'Date',
));
return parent::_prepareColumns();
}
public function getGridUrl()
{
return $this->getUrl('*/*/grid', array('_current'=>true));
}
}
Here is what i have in: /app/code/community/VivasIndustries/SmsNotification/controllers/Adminhtml/SmsorderstatusesController.php:
<?php
class VivasIndustries_SmsNotification_Adminhtml_SmsorderstatusesController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->_title($this->__('Sales'))->_title($this->__('SMS Center'));
$this->loadLayout();
$this->_setActiveMenu('sales/sales');
$this->_addContent($this->getLayout()->createBlock('smsnotification/adminhtml_sales_status'));
$this->renderLayout();
}
public function gridAction()
{
$this->loadLayout();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('smsnotification/adminhtml_sales_status_grid')->toHtml()
);
}
public function exportInchooCsvAction()
{
$fileName = 'orders_inchoo.csv';
$grid = $this->getLayout()->createBlock('smsnotification/adminhtml_sales_status_grid');
$this->_prepareDownloadResponse($fileName, $grid->getCsvFile());
}
public function exportInchooExcelAction()
{
$fileName = 'orders_inchoo.xml';
$grid = $this->getLayout()->createBlock('smsnotification/adminhtml_sales_status_grid');
$this->_prepareDownloadResponse($fileName, $grid->getExcelFile($fileName));
}
}
As you can see this page is fetching MySQL data from a CUSTOM MySQL table created by me. Here is the structure of the table named VivasIndustries_SmsNotification
:
I have two question about the problem:
- Why i get the error when i click on
Create new SMS Rules
and how i can make a page there that have two simple imputs like:Receiver
where you can place the name andPhone
and then when you clickSubmit
this data should be imported intoVivasIndustries_SmsNotification
MySQL table. - My second question is: Why when i click on a table row NO "Edit" page is opened. How i can make a simple edit page which will obviously edit the row ?
Thanks in advance!