2012-12-05 25 views
1

我想添加两个自定义字段,用于客户订阅的通讯订阅者及其IP地址: 1)我已经添加了两个'newsletter_subscriber'表中的列。 这是如何实现的?为通讯订阅者添加'subscription_date'和'user_ip_address'字段,并在Magento的管理面板中显示

在文件应用程序/代码/核心/法师/新闻/型号/ Subscriber.php 我找到喜欢的功能:

$this->setSubscriberEmail($email); 
$this->setStoreId(Mage::app()->getStore()->getId()); 
$this->setCustomerId(0); 

,但我没有发现它的代码。 我想我也保存这样的数据,但它会如何呢?我必须定义和声明函数的代码,例如$ this-> seSubscriptionDate();

以及如何在新闻快递 - >通讯订阅者下的管理面板中显示?

回答

6

我还没有找到任何人的解决方案或帮助。 1)在表格中添加栏“newsletter_subscriber”,在我的例子中说“subscription_date”和“sub_ip_address” 2)添加一个表格以下两行的文件@两个地方 应用程序\代码\核心\法师\新闻\型号\ Subscriber.php

**$this->setSubscriptionDate(date("d-m-Y")); 
**$this->setSubIpAddress($_SERVER['REMOTE_ADDR']); 

一个地方:在功能:公共职能订阅($电子邮件) 前:$这 - >保存(); 第二位:在函数中:public function subscribeCustomer($ customer) Before:$ this-> save(); 现在数据将被添加到表中 现在显示在管理面板 1)打开文件app \ code \ core \ Mage \ Adminhtml \ Block \ Newsletter \ Subscriber \ Grid.php 只需在其中添加两个必需的列

$this->addColumn('subscription_date', array(
      'header' => Mage::helper('newsletter')->__('Subscription Date'), 
      'index'  => 'subscription_date', 
      'default' => '----' 
     )); 

     $this->addColumn('sub_ip_address', array(
      'header' => Mage::helper('newsletter')->__('IP Address'), 
      'index'  => 'sub_ip_address', 
      'default' => '----' 
     )); 

现在完成。 **这是我花了我的时间,并在最后我添加这个功能的命中和依据,但它的工作原理。 来自Core magento团队的某人plz解释了为什么{setSubscriptionDate()}函数有效?我还没有宣布这个功能的任何人。 它似乎显示intellisense检测表字段?

0

我也有类似的问题。然而,就我而言,我应该在简报表格中添加一个“国家”和“性别”字段。所以,深入挖掘核心几个小时我就明白了这一点。下面是交代:

应用程序/设计/前端//默认/模板/通讯/ 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){}

因此,所有我曾在模型中做的是:

  1. 编辑方法订阅($电子邮件)认购($电子邮件,$国家,$性别)
  2. 在认购($电子邮件,$添加以下代码国家,$性别)功能的权利脱颖而出try语句如下:

    $this->setSubscriberCountry($country); 
    $this->setSubscriberGender($gender); 
    

尝试{ $这个 - >保存()


哈桑的方法在我的Magento的MVC的理解发挥了关键作用,因此它的从我身边回来。

相关问题