2012-01-25 2 views
4

Magento 뉴스 레터 구독자는 이름과 성을 기입하기를 원합니다. 폼에 두 개의 입력 필드를 추가했습니다. 필드 이름은 'firstname'과 'lastname'입니다. 내가 마법사/뉴스/컨트롤러를 확장하는거야Magento 가입자 성 & 이름

/newAction에서

SubscriberController.php는() :

여기 포스트 변수를 검색 한 :

$email = (string) $this->getRequest()->getPost('email'); 
$firstname = (string) $this->getRequest()->getPost('firstname'); 
$lastname = (string) $this->getRequest()->getPost('lastname'); 

성공 메시지 뒤에 다음 코드를 추가했습니다.

$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);    
      $subscriber->setEmail("[email protected]");    
      $subscriber->setFirstname("ADAM");    
      $subscriber->setLastname("MOSS"); 
      $subscriber->save(); 

나는 first와 last name 방식이 작동하기를 원한다. setEmail 부분은 완벽하게 작동한다. Model/Subscriber.php을보고 구독자 이름을 설정하는 기능이 없다는 것을 알았습니다.

관리자의 그리드를 보면 'Customer First Name'과 'Customer Last Name'이라는 메시지가 나타 났으므로 이름이 가입자 모델이 아닌 고객 모델에 속한다고 가정합니다.

이 방법이 있습니까? 구독자에게 뉴스 레터를 구독 할 때 고객 이름을 지정할 수 있기를 원합니다. 이 게시물에 언급 된 옵저버 방법을 시도했지만 같은 문제가 있다고 생각합니다. Adding a custom field to Magento's subscription module

어떤 도움을 주시면 감사하겠습니다.

답변

2

데이터베이스의 newsletter_subscriber 테이블을 살펴보십시오. 이름이나 성이 없습니다. 뉴스 레터 모델에서만이 필드를 설정합니다.

구독자 모델의 subscribe() 메서드는 구독자를 고객 ID에 연결하므로 눈금에 실제로 고객의 성 및 성이 표시됩니다.

큐머와 관련이없는 가입자에 대해서도이 필드를 사용하려면이 두 필드를 추가하여 newsletter_subscriber 데이터베이스 테이블을 수정해야합니다. 응용 프로그램에서/Subscriber.php

을 응용 프로그램/코드/코어/마법사/뉴스/컨트롤러/SubscriberController.php 응용 프로그램/코드/코어/마법사/뉴스/모델 :

0

당신의 로컬 복사본을 만들어야합니다 라인 (44) 이후에 추가 /code/core/Mage/Newsletter/controllers/SubscriberController.php :

$status = Mage::getModel('newsletter/subscriber')->subscribe($email); 

에 :

$firtname = (string) $this->getRequest()->getPost('firstname'); 
$lastname = (string) $this->getRequest()->getPost('lastname'); 

그때부터 변경 01,

$status = Mage::getModel('newsletter/subscriber')->subscribe($email,$firtname,$lastname); 

이제 app/code/core/Mage/Newsletter/Model/Subscriber에 있습니다.이를 위해 getter와 setter를

$this->setSubscriberFirstname($firstname); 
$this->setSubscriberLastname($lastname); 

그리고 추가 :

public function subscribe($email,$firstname,$lastname) 

라인 (338) 후이 추가 :

public function subscribe($email) 

에 : PHP는 편집으로부터 라인 (307)에서 함수 서명을 구독

/** 
* Alias for getSubscriberFirstname() 
* 
* @return string 
*/ 
public function getFirstname() 
{ 
    return $this->getSubscriberFirstname(); 
} 

/** 
* Alias for setSubscriberFirstName() 
* 
* @param string $value 
*/ 
public function setFirstname($value) 
{ 
    return $this->setSubscriberFirstname($value); 
} 

/** 
* Alias for getSubscriberLastname() 
* 
* @return string 
*/ 
public function getLastname() 
{ 
    return $this->getSubscriberLastname(); 
} 

/** 
* Alias for setSubscriberLastname() 
* 
* @param string $value 
*/ 
public function setLastname($value) 
{ 
    return $this->setSubscriberLastname($value); 
} 
또한 다른 anwser에서 말했듯이 newsletter_subscriber에 firstname 및 lastname 열을 추가해야합니다.