微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

API平台Symfony,使用sarbacane发送短信时无法验证布尔类型的值

如何解决API平台Symfony,使用sarbacane发送短信时无法验证布尔类型的值

我创建了一个自定义操作来使用symfony和sarbacane发送短信:

在我的AppUser实体中添加了注释:

 *          "GET",*          "PUT",*          "PATCH",*          "DELETE",*          "send_sms"={
 *              "method"="POST",*              "path"="/app_users/{id}/sms",*              "controller"=SmsController::class,*              "normalization_context"={"groups"={"user:read"}},*              "put"={"validation_groups"={"Default","sedValidation"}}
 *          }
 *    }

在我的控制器中,我实现了invoke方法

public function __invoke(AppUser $user,Request $request,SerializerInterface $serializer) : bool
{

    $data = $request->getContent();
    // json decode transforms to object by default
    // add true
    $json_encode = json_decode($data,true);

    $content = $json_encode['content'];

    $currentUser = $this->getUser();

    $currentUserPhone = $currentUser->getPhone();

    $res = $this->sarbacaneApiHelper->call('campaigns/sms',[
        'name' => sprintf("eXpanded n°%s",uniqid()),'kind' => 'SMS_NOTIFICATION','smsFrom' => "eXpanded",// entre 3 et 11 caractères alpha-numériques
        'content' => $content,// max 450 caractères
    ]);

    $phone = $currentUserPhone;

    $sarbacaneCampaignId = $res->id;

    // Ajoute des destinataires à la campagne Sarbacane
    $res = $this->sarbacaneApiHelper->call(sprintf('campaigns/%s/recipients',$sarbacaneCampaignId),[
        [
            'phone' => $phone,],]);

    $params = [
        "phone" => $currentUserPhone,];

    $this->sarbacaneApiHelper->call(sprintf('campaigns/%s/send',$params);

    $sent = true;


    return $sent;
}

我使用邮递员测试了api,并且收到500个内部服务器错误

“ hydra:description”:“无法自动验证” boolean“类型的值。请提供约束。”

enter image description here

解决方法

为什么会出现此错误消息?

invoke()方法must return either

  • 一个Symfony\Component\HttpFoundation\ResponseResponse实例,
  • 目标实体的实例(在这种情况下,似乎是AppUser

在您的情况下,该方法返回true;由于验证是在控制器之后进行的,因此Api-Platform会尝试验证此布尔值,而这是不可能的。它期望一个实体。

关于问题中显示的代码

我仍然不清楚您要达到的目标:

  • 为什么从未使用$user arg?
  • 发送电子邮件后是否要保存任何实体?
  • 您为什么要提取Request的内容?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。