我正在嘗試使用MongoDB。但是我有一些問題。錯誤提供默認值
# src/Controller/DefaultController.php
public function editCategoryAction(Category $category) {
echo $category->getName();
die();
}
對於「實體」,這是好的,但不適用於MongoDB。
它顯示此錯誤消息:
控制器「網站\ StoreBundle \控制器\ DefaultController :: editCategoryAction()」要求您提供的「$類」參數的值(因爲沒有默認值或因爲在這之後有一個非可選的參數)。
我的類別文檔:
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 }
我怎樣才能解決這個問題?
編輯: 我發現這篇文章:http://php-and-symfony.matthiasnoback.nl/2012/10/symfony2-mongodb-odm-adding-the-missing-paramconverter/
我改變了我的的src /網站/ StoreBundle /資源/配置/ services.yml這樣: 參數: #site_store.example.class :站點\ StoreBundle \實施例
services:
doctrine_mongo_db_param_converter:
class: Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter
arguments: ['@doctrine_mongodb']
但相同的錯誤:/
我假設你使用'ParamConverter',對嗎? –
是這樣的:public'function editCategoryAction(Category $ category)' – Hotgeart
是的,你是如何配置這個方法來使用'ParamConverter'?你使用YAML或XML來做到這一點嗎? –