Symfony API 控制器必须返回响应

Fra*_*cas 6 php api symfony

我创建了一个具有 OneToMany 关系的小型 CRUD 系统,并且还想创建一个小型 API。

我生成了一个新的 ApiBundle 并为我的 1 个实体添加了 1 个控制器,如下所示:

<?php

namespace ApiBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\Controller\FOSRestController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use FOS\RestBundle\View\View;
use DataBundle\Entity\Job;

class JobController extends FOSRestController
{
    public function getAction()
    {
        $result = $this->getDoctrine()->getRepository('DataBundle:Job')->findAll();

        if ($result === null) {
            return new View("There are no jobs in the database", Response::HTTP_NOT_FOUND);
        }

        return $result;
    }

    public function idAction($id)
    {
        $result = $this->getDoctrine()->getRepository('DataBundle:Job')->find($id);

        if($result === null) {
            return new View("Job not found", Response::HTTP_NOT_FOUND);
        }

        return $result;
    }

}
Run Code Online (Sandbox Code Playgroud)

但是当我调用 /api/jobs 时,出现以下错误:

未捕获的 PHP 异常 LogicException:“控制器必须返回响应(给出的 Array(0 => Object(DataBundle\Entity\Job), 1 => Object(DataBundle\Entity\Job))”。

有人知道我在这里做错了什么吗?

任何帮助表示赞赏!

提前谢谢了 :)

小智 7

该错误告诉您返回响应。像这样的东西:

return new Response(
        'There are no jobs in the database', 
         Response::HTTP_OK
    );
Run Code Online (Sandbox Code Playgroud)

或者如果你想要一个 json 响应,你可以这样做

return new JsonResponse(
         [
             'message' => 'There are no jobs in the database', 
         ]
         Response::HTTP_OK
    );
Run Code Online (Sandbox Code Playgroud)


Alv*_*unk -1

你能试试这个吗:

$view = $this->view($result, Response::HTTP_OK);
return $view;
Run Code Online (Sandbox Code Playgroud)

让我们知道这是否有效。