我也有类似的问题。然而,就我而言,我应该在简报表格中添加一个“国家”和“性别”字段。所以,深入挖掘核心几个小时我就明白了这一点。下面是交代:
在应用程序/设计/前端//默认/模板/通讯/ subscribe.phtml, 形式有getFormActionUrl()>在其行动领域?此referes到应用程序/代码/核心/法师/新闻/砌块/ Subscribe.php
的$因此此对象在subscirbe.phtml文件referes用于由此类(即Mage_Newsletter_Block_Subscribe)$这 - > getFormActionUrl( )subscribe.phtml文件中的指的是该类的函数getFormActionUrl()。现在,这个getFormActionUrl()返回一个属于它的父级Mage_Core_Block_Template的方法$ this-> getUrl('newsletter/subscriber/new',array('_ secure'=> true))(我的意思是方法getURL ())。这部分对我们并不重要。
参见传递给getURL()函数是通讯/订户/新参数 第一部分“通讯”是模块名(应用程序/代码/代码/法师/通讯),第二部分“订户”是控制器的域名(应用程序/代码/代码/法师/通讯/控制器/ SubscriberController)和第三部分的‘新’是在控制器SubscriberController方法newAction。
控制器名称后缀控制器和函数名由行动后缀。 (感谢尔康框架,以帮助理解这一点)
现在在newAction()方法中,你可以看到,默认情况下,只有邮件被公布 为
$电子邮件=(字符串)$这个 - >调用getRequest( ) - >的getPost( '电子邮件');
我做什么,我克隆一个名字定制newsletter.phtml的subscribe.phtml模板,并命名为“国家”,“性别”添加两个字段。然后加入下列线路中的newAction():
$country = (string) $this->getRequest()->getPost('country');
$gender = (string) $this->getRequest()->getPost('gender');
现在在SubscriberController(所述newAction内()方法)存在的行号67是一个代码:
$status = Mage::getModel('newsletter/subscriber')->subscribe($email);
这条线被调用在订阅的应用程序/代码/代码方法/法师/通讯/型号/ Subscriber.php并且正在传递是从通讯形式张贴到其中的$电子邮件。我修改了路线为:
$状态=法师:: getModel( '通讯/用户') - >订阅($电子邮件,$国家,$性别);
现在,我必须编辑应用程序/代码/代码/法师/通讯/型号/ Subscriber.php
当我们谈论模型,我们正在谈论的数据库表中的Model指。型号名称是用户及其所属的模块通讯的话,数据库表,这种模式影响是newsletter_subscriber
从这个部分上@Hassan阿里Sshahzad的问题将得到解答。
我添加了两个新列没有名称:subscriber_country和subscriber_gender。 现在,Magento的”系统会自动提供一个getter和setter函数将这些列具有以下名称:
功能getSubscriberCountry(){} 功能setSubscriberCountry($ COUNTRY_NAME){}
因此,所有我曾在模型中做的是:
- 编辑方法订阅($电子邮件)认购($电子邮件,$国家,$性别)
在认购($电子邮件,$添加以下代码国家,$性别)功能的权利脱颖而出try语句如下:
$this->setSubscriberCountry($country);
$this->setSubscriberGender($gender);
尝试{ $这个 - >保存()
哈桑的方法在我的Magento的MVC的理解发挥了关键作用,因此它的从我身边回来。