Symfony2:新闻稿订阅
我需要让订阅时事通讯的事情运作起来。我使用的逻辑是,当用户提交他的电子邮件时,我检查是否已经有用户通过电子邮件注册到该站点。如果是,我检查他是否订阅了时事通讯,并进行相应的订阅。如果电子邮件不在注册用户列表中,那么我有一个匿名用户通讯表。我在这里检查他是否已订阅,并执行必要的操作 以下是我的控制器操作代码:Symfony2:新闻稿订阅,symfony,newsletter,fosuserbundle,Symfony,Newsletter,Fosuserbundle,我需要让订阅时事通讯的事情运作起来。我使用的逻辑是,当用户提交他的电子邮件时,我检查是否已经有用户通过电子邮件注册到该站点。如果是,我检查他是否订阅了时事通讯,并进行相应的订阅。如果电子邮件不在注册用户列表中,那么我有一个匿名用户通讯表。我在这里检查他是否已订阅,并执行必要的操作 以下是我的控制器操作代码: /** * @Route("/newsletter/", name="site_newsletter") * @return array */ public function news
/**
* @Route("/newsletter/", name="site_newsletter")
* @return array
*/
public function newsletterSubscriptionAction(httpRequest $request)
{
$email = $request->request->get('email');
try {
$email = $request->request->get('email');
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery(
'SELECT u FROM MyBundle:User u WHERE u.email = :email'
)->setParameter('email', $email);
$user = $query->getSingleResult();
if(!is_object($user)){ //this means anonymous user not registered to site
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery(
'SELECT n FROM MyBundle:Newsletter n WHERE n.email = :email AND n.isSubscribed = 1'
)->setParameter('email', $email);
$record = $query->getSingleResult();
if($record){
$msg = "You are already subscribed!";
}else{
$newsletter = new Newsletter();
$newsletter->setEmail($email);
$newsletter->setIsSubscribed(true);
$em = $this->getDoctrine()->getEntityManager();
$em->persist($newsletter);
$em->flush();
$msg = "You have been subscribed to our newsletter! Thank You.";
}
}else{
if($user->getNewsletterSubscription()){
$msg = "You are already subscribed!";
}else{
$user->setNewsletterSubscription(1);
$em = $this->getDoctrine()->getEntityManager();
$em->flush();
$msg = "You have been subscribed to our newsletter! Thank You.";
}
}
}
catch (\Exception $e) {
$msg = 'Some problem occured. Please try again later';
}
if ($this->getRequest()->isXmlHttpRequest()) {
return new \Symfony\Component\HttpFoundation\Response($msg);
return array('msg' => $msg);
}
}
我正在使用ajax调用此控制器操作。这不管用。返回ajax的数据被重定向到登录页面
我使用FOSUSerBundle来管理用户。这会引起什么问题吗?实施它的最佳方式是什么
提前谢谢 听起来您需要向其他用户授予使用订阅路由的权限 在security.yml文件中,添加如下内容:
security:
access_control:
- { path: ^/subscribe, roles: IS_AUTHENTICATED_ANONYMOUSLY }
嘿推我超过2000次。谢谢