Mongodb 提供默认值时出错
我想和MongoDB一起玩。但我有一些问题Mongodb 提供默认值时出错,mongodb,symfony,Mongodb,Symfony,我想和MongoDB一起玩。但我有一些问题 # src/Controller/DefaultController.php public function editCategoryAction(Category $category) { echo $category->getName(); die(); } 对于“实体”,这是可以的,但对于MongoDB则不行 它显示以下错误消息: 控制器“Site\StoreBundle\Controller\DefaultControl
# src/Controller/DefaultController.php
public function editCategoryAction(Category $category) {
echo $category->getName();
die();
}
对于“实体”,这是可以的,但对于MongoDB则不行
它显示以下错误消息:
控制器“Site\StoreBundle\Controller\DefaultController::editCategoryAction()”要求您为“$category”参数提供一个值(因为没有默认值,或者因为此参数后面有一个非可选参数)
我的分类文档:
namespace Site\StoreBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document
*/
class Category
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\String
*/
protected $name;
/**
* @MongoDB\ReferenceMany(targetDocument="Product")
*/
private $products = array();
public function __contructor() {
$this->products = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get id
*
* @return id $id
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return self
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string $name
*/
public function getName()
{
return $this->name;
}
public function getProducts() {
return $this->products;
}
public function __construct()
{
$this->products = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add product
*
* @param Site\StoreBundle\Document\Product $product
*/
public function addProduct(\Site\StoreBundle\Document\Product $product)
{
$this->products[] = $product;
}
/**
* Remove product
*
* @param Site\StoreBundle\Document\Product $product
*/
public function removeProduct(\Site\StoreBundle\Document\Product $product)
{
$this->products->removeElement($product);
}
}
我的路线
editCategory:
path: /editCategory/{id}
defaults: { _controller: SiteStoreBundle:Default:editCategory }
我怎样才能解决这个问题
编辑:
我发现这篇文章:
我将src/Site/StoreBundle/Resources/config/services.yml更改为:
参数:
#site\u store.example.class:site\StoreBundle\example
services:
doctrine_mongo_db_param_converter:
class: Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter
arguments: ['@doctrine_mongodb']
但同样的错误:/我认为您没有标记您的服务:
services:
doctrine_mongo_db_param_converter:
class: Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter
arguments: ['@doctrine_mongodb']
tags:
- { name: request.param_converter, priority: -2, converter: doctrine_mongo_db_param_converter}
我假设您使用了
ParamConverter
,对吗?是这样的:public函数editCategoryAction(Category$Category)
是的,您是如何配置此方法以使用ParamConverter
?你是用YAML还是XML来做的?我想是用我的YAML。我遵循了本教程:(检查我的编辑:)。我从来没有在实体上遇到过这个错误。我已经添加了关于服务标签的答案。你应该先试试:)