/**
* @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实际上可以处理参数吗?
答案 0 :(得分:1)
我遇到了同样的问题而且我没有找到记录在案的解决方案。我认为解决方法是创建一个接收参数过滤器的通用方法,并另外创建根据@VirtualProperty所需的业务调用它的方法。
示例:
function myGenericFilter($parameter)
{
<do something>
:
return result;
}
/**
* @VirtualProperty
**/
function getManagers()
{
return $this->myFilter(1);
}
/**
* @VirtualProperty
**/
function getStaff()
{
return $this->myFilter(2);
}