Skip to content

Instantly share code, notes, and snippets.

@turbo-ele
Created July 23, 2015 12:07
Show Gist options
  • Save turbo-ele/b0f836e707f27c15512f to your computer and use it in GitHub Desktop.
Save turbo-ele/b0f836e707f27c15512f to your computer and use it in GitHub Desktop.
Symfony2 Newsletter Controller
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Acme\Bundle\NewsletterBundle\Manager\NewsletterManager;
class NewsletterController extends Controller
{
/**
* @Route("/newsletter/subscribe/{emailAddress}", name="subscribe")
*/
public function subscribeAction($emailAddress)
{
$responseMessage = 'failed';
if ($emailAddress) {
$success = $this->getNewsletterManager()->subscribe($emailAddress);
if ($success) {
$responseMessage = 'Added ' . $emailAddress . ' to newsletter';
}
}
return new Response($responseMessage);
}
/**
* @Route("/newsletter/unsubscribe/{emailAddress}", name="unsubscribe")
*/
public function unsubscribeAction($emailAddress)
{
$responseMessage = 'failed';
if ($emailAddress) {
$success = $this->getNewsletterManager()->unsubscribe($emailAddress);
if ($success) {
$responseMessage = 'Unsubscribed ' . $emailAddress . ' from newsletter';
}
}
return new Response($responseMessage);
}
/**
* @Route("/newsletter/send", name="send")
*/
public function sendAction(Request $request)
{
$subject = $request->get('subject');
$message = $request->get('message');
$responseMessage = 'failed';
if ($subject && $message) {
$this->getNewsletterManager()->sendNewsletter($subject, $message);
$responseMessage = 'done';
}
return new Response($responseMessage);
}
/**
* Get newsletter manager from container
*
* @return NewsletterManager
*/
private function getNewsletterManager()
{
return $this->get('acme_newsletter.newsletter_manager');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment