Symfony ApiPlatform React - CORS

问题描述 投票:0回答:1

我有一个问题... 使用APIPlatform和React,我想用Symfony mailer发送邮件,我使用了一个自定义操作。

以下是我所有的页面,以实现我的选择。

    <?php
namespace App\Controller;

use App\Entity\Contact;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\MailerInterface;

class ContactMailController {

    private $mail;

    public function __construct(MailerInterface $mailer)
    {
        $this->mailer = $mailer;
    }


    public function __invoke(Contact $data){
        $prenom=htmlspecialchars(strip_tags($data->getPrenom()));
        $nom=htmlspecialchars(strip_tags($data->getNom()));
        $message=htmlspecialchars(strip_tags($data->getMessage()));
        $mail=htmlspecialchars(strip_tags($data->getMail())); 
        $email = (new TemplatedEmail())
            ->from('[email protected]')
            ->to('[email protected]')
            ->subject("contact")
            ->htmlTemplate('email/contact.html.twig')
            ->context([
                'nom'=>$nom,
                'prenom'=>$prenom,
                'mail'=>$mail,
                'message'=>$message
            ]);
            $this->mailer->send($email);
        dd($data);    

    }

}

我把它连接到一个实体

/**
 * @ApiResource(
 *      itemOperations={},
 *      collectionOperations={"mail"={
 *          "method"="post", 
 *          "path"="/contacts/mailer",
 *          "controller"="App\Controller\ContactMailController",
 *          "openapi_context"={
 *              "summary"="Envoyer un mail à [email protected]",
 *              "description"="Permet d'envoyer un e-mail à [email protected]"
 *          }
 *      }},
 *      denormalizationContext={"disable_type_enforcement"=true}
 *)
 */
class Contact{
...

有了Postman,它就能完成,但有了React,它就能完成。

const contactSubmit = async (event)=>{
      ...
                try{
                    axios.post("http://myapi.com/api/contacts/mailer",fields)
                    toast.info('votre message à bien été envoyé')
                    setFields({
                        "prenom": "",
                        "nom": "",
                        "mail": "",
                        "message": ""
                    })
                }catch(error){
                    //
                }  
     ...
    }

我有一个错误。Access to XMLHttpRequest at 'http://myapi.com/api/contacts/mailer' from origin 'http://mywebsite.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

但我在我的.env中有

###> nelmio/cors-bundle ###
CORS_ALLOW_ORIGIN=^.*$
###< nelmio/cors-bundle ###

最糟糕的是,它的发送,它的工作原理,但我不希望看到的错误显示... ...

谢谢你的帮助!我有一个问题...

reactjs api symfony api-platform.com symfony5
1个回答
1
投票

我解决了我的问题!我的错误是在控制器,我还没有做出回应。

   ...
    ->context([
                'nom'=>$nom,
                'prenom'=>$prenom,
                'mail'=>$mail,
                'message'=>$message
            ]);
            $this->mailer->send($email);
        // my mistake
        return new Response("sent"); 
© www.soinside.com 2019 - 2024. All rights reserved.