[英]does not work - zf2 CRUD mongo
我正在嘗試使用doctrine 2和zend framework 2使用mongodb構建一個CRUD。
我遵循了一些教程,但是仍然失敗。
請點擊以下鏈接: http : //www.bigwisu.com/2012/10/03/zend-framework-2-doctrine-odm https://github.com/doctrine/DoctrineMongoODMModule
以下是項目中使用的配置:
module.doctrine_mongodb.local.config.php
<?php
return array(
'doctrine' => array(
'connection' => array(
'odm_default' => array(
'server' => 'localhost',
'port' => '27017',
'dbname' => 'teste',
'options' => array()
),
),
'configuration' => array(
'odm_default' => array(
'metadata_cache' => 'array',
'driver' => 'odm_default',
'generate_proxies' => true,
'proxy_dir' => 'data/DoctrineMongoODMModule/Proxy',
'proxy_namespace' => 'DoctrineMongoODMModule\Proxy',
'generate_hydrators' => true,
'hydrator_dir' => 'data/DoctrineMongoODMModule/Hydrator',
'hydrator_namespace' => 'DoctrineMongoODMModule\Hydrator',
'default_db' => 'teste',
'filters' => array()
)
),
'documentmanager' => array(
'odm_default' => array(
// 'connection' => 'odm_default',
// 'configuration' => 'odm_default',
// 'eventmanager' => 'odm_default'
)
),
'eventmanager' => array(
'odm_default' => array(
'subscribers' => array()
)
),
),
);
module.config.php添加
'doctrine' => array(
'driver' => array(
__NAMESPACE__.'_driver' => array(
'class' => 'Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver',
'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Document')
),
'odm_default' => array(
'drivers' => array(
__NAMESPACE__ . '\Document' => __NAMESPACE__.'_driver'
)
)
)
)
Document \\ Artigo.php
<?php
namespace Site\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/** @ODM\Document(collection="artigo") */
class Artigo
{
/** @ODM\Id */
private $id;
/** @ODM\Field(type="string") */
private $nome;
/**
* @return the $id
*/
public function getId() {
return $this->id;
}
/**
* @return the $nome
*/
public function getNome() {
return $this->nome;
}
/**
* @param field_type $id
*/
public function setId($id) {
$this->id = $id;
}
/**
* @param field_type $nome
*/
public function setNome($nome) {
$this->nome = $nome;
}
}
和控制器:
<?php
namespace Site\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Site\Document\Artigo;
class IndexController extends AbstractActionController
{
public function indexAction()
{
$dm = $this->getServiceLocator()->get('doctrine.documentmanager.odm_default');
$artigo = new Artigo();
$artigo>setNome("teste");
$dm->persist($artigo);
$dm->flush();
return new ViewModel(array('teste'=>'acho que deu'));
}
}
沒有錯誤發生,也不會插入記錄。 你知道會是什么嗎?
我研究了DoctrineMongoODMModule,並擁有自己的庫,可以幫助連接zf2學說和mongo。 如果要為原則文檔創建JSON REST端點,請按以下步驟操作...
將以下內容添加到您的composer.json中:
"superdweebie/doctrine-extensions-module": "dev-master"
更新作曲家。
在您的application.config.php
注冊這些模塊:
'modules' => array(
'Sds\Zf2ExtensionsModule',
'DoctrineModule',
'DoctrineMongoODMModule',
'Sds\DoctrineExtensionsModule',
),
然后添加您的模塊配置之一:
'sds' => [
'doctrineExtensions' => [
'doctrine' => [
'driver' => 'odm_default',
'eventmanager' => 'odm_default',
'configuration' => 'odm_default',
'documentManager' => 'doctrine.documentmanager.odm_default',
],
'extensionConfigs' => [
'Sds\DoctrineExtensions\Rest' => true,
],
],
],
'router' => [
'routes' => [
'Sds\Zf2ExtensionsModule\RestRoute' => [
'type' => 'Sds\Zf2ExtensionsModule\RestRoute',
'options' => [
'route' => '/rest',
'defaults' => [
'controller' => 'Sds\DoctrineExtensionsModule\Controller\JsonRestfulController'
],
],
],
],
],
然后將@Sds\\Rest
批注添加到您的文檔中:
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
use Sds\DoctrineExtensions\Annotation\Annotations as Sds;
/**
* @ODM\Document
* @Sds\Rest
*/
class MyDocument{
...
}
而已。
現在,您可以像這樣使用REST服務:
其余端點位於http://mysite.com/rest/mydocument
要從任何請求獲取json,請包含accept: "application/json"
標頭。 要發送帶有任何請求的json,請包含content-type: "application/json"
標頭。
要讀取單個項目,請發送ID為的GET
請求:
http://mysite.com/rest/mydocument/itemid
要讀取列表,請將GET
請求發送至:
http://mysite.com/rest/mydocument
列出產品時,默認情況下將返回前30個。 要更改此設置,請使用范圍標頭,例如:
range: items=5-10
即使請求的項目超過30個,也將返回最大值30。 該響應將具有以下標頭,以指示已返回哪些項目以及總共返回了多少個項目:
Content-Range: items 0-24/66
可以使用查詢字符串查詢列表。 例如:
http://mysite.com/rest/mydocument?fieldA=filterValue
可以使用查詢字符串對列表進行排序。 例如,將按類型排序,然后按名稱降序:
http://mysite.com/rest/mydocument?sort(+type,-name)
要創建,請發送帶有json內容的POST
請求。 例如:
request-
http://mysite.com/rest/mydocument
content-
{id: 1234, fieldA: 'abc'}
要進行更新,請發送一個帶有JSON內容的PUT
請求到特定的ID。 例如:
request-
http://mysite.com/rest/mydocument/1234
content-
{fieldA: 'def'}
要刪除,請將DELETE
請求發送到特定的ID。 例如:
http://mysite.com/rest/mydocument/1234
這些模塊的文檔開頭可在https://sds.readthedocs.org/en/latest/中找到。 還有此處未描述的其他功能,可與dojo客戶端框架,控件序列化和訪問控制集成在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.