Laravel-Newsletter v5.1无subscribePending方法,求实现或替代方案
方案一:手动实现待确认订阅逻辑
Laravel Newsletter v5.1本身没有subscribePending()方法,但可以通过调用底层Mailchimp API的参数来实现待确认订阅(即双重验证订阅)。
原有的subscribe()方法支持传入第三个参数作为选项,其中double_optin设为true时,Mailchimp会向用户发送确认邮件,用户点击链接后才会完成订阅(此时用户处于待确认状态)。直接修改现有代码即可:
use Newsletter; Newsletter::subscribe( $email, ['FNAME' => $fname, 'LNAME' => $lname], ['double_optin' => true] );
如果希望保留subscribePending()的调用方式,可以通过宏定义扩展Newsletter门面:
在App\Providers\AppServiceProvider的boot()方法中添加以下代码:
use Spatie\Newsletter\NewsletterFacade as Newsletter; public function boot() { Newsletter::macro('subscribePending', function ($email, $mergeFields = []) { return $this->subscribe($email, $mergeFields, ['double_optin' => true]); }); }
之后就可以像预期那样调用:
Newsletter::subscribePending($email, ['FNAME' => $fname, 'LNAME' => $lname]);
方案二:使用替代包
如果不想手动扩展,可以选择直接使用Mailchimp官方的PHP SDK,自行封装订阅和待确认订阅的逻辑;或者使用支持双重验证订阅的Laravel集成包,比如laravel-mailchimp,这类包通常原生支持类似subscribe()和subscribePending()的语义化方法,同时兼容Laravel的配置方式。
内容的提问来源于stack exchange,提问作者TWF
相关产品推荐
相关产品推荐

