使用JMS @Vi​​rtualPropery的参数

时间:2015-05-27 22:46:16

标签: doctrine-orm jmsserializerbundle

/**
 * @Serializer\VirtualProperty 
 * @Serializer\SerializedName("datasByStatus")
 */
public function getNbOfDatasByStatus($status) {
    $datas = $this->getDatas();
    $nbOfDatas = 0;
    for($i=0; $i<sizeof($datas); $i++){
        if($datas[$i]->isValide() === $status){
         $nbOfDatas ++;
        }
    }
    return $nbOfDatas;
}

这会导致失败:

 "Warning: Missing argument 1 for Bundle\\ModelBundle\\Entity\\MyEntity::getNbOfDatasByStatus(), called in api/vendor/jms/serializer/src/JMS/Serializer/Metadata/PropertyMetadata.php on line 89 and defined

我确信在调用此方法的不同位置没有缺少参数。我甚至试图将它们全部删除,但仍然会出现错误。

如果我在参数中添加一个默认值,它会起作用但实际传递的参数会被忽略。

我没有找到任何搜索文档的内容...... @VirtualProperty实际上可以处理参数吗?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题而且我没有找到记录在案的解决方案。我认为解决方法是创建一个接收参数过滤器的通用方法,并另外创建根据@VirtualProperty所需的业务调用它的方法。

示例:

function myGenericFilter($parameter)
{
   <do something>
      :
   return result;
}

/**
* @VirtualProperty
**/
function getManagers()
{
    return $this->myFilter(1);
}

/**
* @VirtualProperty
**/
function getStaff()
{
     return $this->myFilter(2);
}