2016-12-05 7 views
3

Yii2 프레임 워크와 Swiftmailer을 사용하여 PHP로 프로그램을 작성합니다.데이터베이스 필드에 오류 메시지 반환 : Yii2 및 Swiftmailer

오류 메시지가있는 데이터베이스 필드를 업데이트하는 방법을 찾으려고합니다. 사용자가 계정을 만들려고하고 유효한 전자 메일이 아닌 경우 FailMesg 필드에 오류 메시지가 업데이트되어야합니다. 내가 할 수있는 두 가지 방법을 시도했지만 아무도 일 것 같다 (데이터베이스 필드는 NULL 남아) :

가 1

$message = Swift_Message::newInstance() 
    ->……….. 
$transport = ……………… 
$mailer = Swift_Mailer::newInstance($transport); 
if($mailer->send($message, $failures)){ 
    …….. 
else 
    …….. 
    $user->FailMesg = $failures; 
........ 
$user->save(); 

2 (사용 (전송에() 메소드를 변수 포함) Logger 플러그인)

$message = Swift_Message::newInstance() 
    ->……….. 
$transport = ……………… 
$mailer = Swift_Mailer::newInstance($transport); 
$logger = new \Swift_Plugins_Loggers_ArrayLogger(); 
$mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($logger)); 
if($mailer->send($message)){ 
    …….. 
else 
    …….. 
    $user->FailMesg = $logger->dump(); 
........ 
$user->save(); 

내가 여기에 뭔가를 놓친가요? 모든 제안은 매우 감사하겠습니다.

+0

을'사실'$의 값을 저장합니다 user-> FailMesg'를 DB에 저장합니다. 나는'$ user'가'User' 모델의 객체이고 FailMesg' 필드가 해당'user' 테이블에 있다고 가정합니다. – sm1979

+0

올바르게 가정합니다. 물론'$ user-> save()'명령을 포함 시켰습니다. 포함시키지 않은 것을 잊었습니다. 미안하지만 초기 질문을 편집 할 것입니다. - @ sm1979 – YorKal

+0

'rules'을 포함시켜 주시겠습니까? 유효성 검사가 저장 중일 수 있습니다. – topher

답변

1

$failures은 문자열이 아니고 배열입니다. swiftmailer docs :

변수 이름이 아직 존재하지 않으면 빈 배열로 초기화되고 실패가 해당 배열에 추가됩니다. 변수가 이미 존재하면 배열에 타입 캐스트되고 실패가 추가됩니다.

당신은 예를 들어, 저장하기 전에 문자열로 변경해야합니다 : 당신 제공하는 코드 샘플 당신이`사용자 ->() save()를 호출하기 볼 수 없습니다에서

$user->FailMesg = implode("|", $failures); 
+0

당신은이 문제에 관해 전적으로 맞습니다. 감사합니다. 그러나 문제는 여전히 남아 있습니다! @topher – YorKal

+0

유효성 검사 오류가 발생하면'$ user-> getErrors()'의 내용을 덤프하십시오. – topher