我有JMS序列化程序的问题.当我使用组时,JMS不会序列化我的子类,但是当我不使用组时,一切都没问题.我做错了什么?
$context = SerializationContext::create()->enableMaxDepthChecks();
$context->setGroups(['clientapi']);
$contextWithoutGroup = SerializationContext::create()->enableMaxDepthChecks();
/** @var Serializer $serializer */
$serializer = $this->container->get('jms_serializer');
$dataClientApi = $serializer->serialize($documentBundle->getFolderDocumentsForClientApi(
$this->getUserFromParam($params), $folder, $categories, $tags
), 'json', $context);
$dataWithout = $serializer->serialize($documentBundle->getFolderDocumentsForClientApi(
$this->getUserFromParam($params), $folder, $categories, $tags
), 'json', $$contextWithoutGroup);
Run Code Online (Sandbox Code Playgroud)
给:
$dataClientApi = '{"0":{"author":{}}}';
$dataWithout = '{"0":{"author":{id: 2}}}';
Run Code Online (Sandbox Code Playgroud)
那是我的课程.家长:
/**
* Document
*
* @ORM\Table(name="documents")
* @ORM\Entity(repositoryClass="AppBundle\Entity\DocumentRepository")
* @ORM\EntityListeners({"DocumentListener"})
* @JMS\ExclusionPolicy("all")
* @JMS\AccessorOrder("custom", custom = {"id", "folderId", "title"})
*/
class Document implements ResourceInterface
{
use Traits\SortableTrait;
use Traits\TimestampableTrait;
/**
* @var integer
*
* …
Run Code Online (Sandbox Code Playgroud) 我有使用Acl和角色的Zend Navigation对象:
echo $this->navigation()->menu('navigation')
->setAcl($this->acl)
->setRole(($this->user ? 'user' : 'guest'))
->render();
Run Code Online (Sandbox Code Playgroud)
和它的工作完美(隐藏一些页面)
但
当我使用自定义部分:
echo $this->navigation()->menu('navigation')
->setAcl($this->acl)
->setRole(($this->user ? 'user' : 'guest'))
->setPartial('partial/twitterBootstrapNavHeadUl.phtml')
->render();
Run Code Online (Sandbox Code Playgroud)
这部分内容
foreach ($this->container as $page)
echo $this->navigation()->menu()->htmlify($page);
Run Code Online (Sandbox Code Playgroud)
它传递给所有页面的部分$ this->容器(通过acl设置为不可用)
也许我应该将acl等传递给partial
foreach ($this->container as $page)
echo $this->navigation()->menu()->setAcl($this->acl)->setRole(($this->user ? 'user' : 'guest'))->htmlify($page); // ?????????????????????
Run Code Online (Sandbox Code Playgroud)
但是如何实现呢?
有什么我应该做/知道的吗?