我使用FOSRestBundle和JMSSerializerBundle为我的网站设置REST服务。“序列化数据不支持资源。”当使用FOSRestBundle和Paginator
我在一个返回Paginator对象的实体库上做了一个自定义方法。当我在普通网站上使用该方法时,该方法效果很好,但是当我想使用REST路由方法时,会引发此错误(XML或JSON输出会引发相同的错误):
“在序列化数据中不受支持。“
我真的不知道在哪里搜索,因为这个错误对我来说并不是很明确。
这里是我的AdsRestController.php:
<?php
namespace MyProject\MainBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use FOS\RestBundle\Controller\Annotations\View;
use FOS\RestBundle\Controller\Annotations\Get;
class AdsRestController extends Controller
{
/**
* @View
* @Get("/ads/list/all/{page}", requirements={"page" = "\id+"}, defaults={"page" = 1})
*/
public function getAdsListAllAction($page) {
$theAds = $this->getDoctrine()->getRepository('MyProjectMainBundle:Ads')->getAds($page);
return $theAds;
}
}
和我AdsRepository.php:
<?php
namespace MyProject\MainBundle\Entity;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Tools\Pagination\Paginator;
class AdsRepository extends EntityRepository
{
public function getAds($page=1, $maxPerPage=10)
{
$query = $this->createQueryBuilder('a')
->orderBy('a.date', $order)
;
$query->getQuery();
$query
->setFirstResult(($page-1) * $maxPerPage)
->setMaxResults($maxPerPage)
;
return new Paginator($query, true);
}
}
任何帮助,将不胜感激!
谢谢。
感谢您的回答。那是我第一次做的。但是toArray()方法不存在! – Anthony 2015-02-08 12:06:02
我得到的错误:'尝试调用方法“toArray”类“Doctrine \ ORM \ Tools \ Pagination \ Paginator' – Anthony 2015-02-08 12:12:29
对不起,我没有测试它。 paginator as $ entry){ $ result [] = $ entry; } return $ result – ToBe 2015-02-08 12:18:13