2017-02-26 25 views
1

私はOneToMany関係で少し粗いシステムを作成しましたが、ちょっとしたAPIも作成したいと思います。Symfony 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; 
    } 

} 

をしかし、私は/ API /ジョブへの呼び出しを行うとき、私は次のエラーを取得:

Uncaught PHP Exception LogicException: "The controller must return a response (Array(0 => Object(DataBundle\Entity\Job), 1 => Object(DataBundle\Entity\Job)) given)."

誰でも私がここで間違っていることを知っていますか?

ご協力いただきましてありがとうございます。事前に

多くの感謝:)

+1

https://symfony.com/doc/current/controller.html –

答えて

0

あなたはこれを試すことができます:

$view = $this->view($result, Response::HTTP_OK); 
return $view; 

それが動作するかどうか、私たちは知ってみましょう。

0

エラーは返信を返すように指示しています。このような何か:

return new Response(
     'There are no jobs in the database', 
     Response::HTTP_OK 
    ); 

か、Responseオブジェクトを返す必要がありますが、この

return new JsonResponse(
     [ 
      'message' => 'There are no jobs in the database', 
     ] 
     Response::HTTP_OK 
    ); 
0

コントローラのような何かを行うことができますJSONレスポンスをしたい場合、あなたは$結果を戻ってきています。

関連する問題