2016-05-22 3 views
0

Я пытаюсь настроить Symfony3 с MongoDB, следуя этим учебным пособием: Symfony3 DocsSymfony3 MongoDB ошибка службы

Я последовал за все насквозь и после Упорство объекта в MongoDB главе я перезарядил мою страницу и получить эту ошибку:

Error: Call to a member function get() on null 

Если я понимаю, это означает, что метод get не может найти заявленную услугу?

мой код контроллера:

<?php 

namespace Cambio\CambioBundle\Controller; 

use Cambio\CambioBundle\Document\Product; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Response; 

class AuthenticationController extends Controller 
{ 
    public function loginAction() 
    { 
     $product = new Product(); 
     $product->setName('A Foo Bar'); 
     $product->setPrice('19.99'); 

     $dm = $this->get('doctrine_mongodb')->getManager(); 
     $dm->persist($product); 
     $dm->flush(); 

     return new Response('Created product id '.$product->getId()); 
    } 
} 

и это мой config.yml:

# MongoDB Configuration 
doctrine_mongodb: 
    connections: 
     default: 
      server: mongodb://localhost:27017 
      options: {} 
    default_database: test_database 
    document_managers: 
     default: 
      auto_mapping: true 

Не тихий уверен, что это проблема и как я могу это исправить.

Дополнительные Эррол Журналы:

in src/Cambio/CambioBundle/Controller/AuthenticationController.php at line 18 - 
     $product->setPrice('19.99'); 
//  $m = $this->container->get('doctrine_mongodb.odm.default_connection'); 
     $dm = $this->container->get('doctrine_mongodb.odm.default_connection')->getManager(); 
     $dm->persist($product); 
     $dm->flush(); 

и Бревенчатые:

CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalErrorException: "Error: Call to a member function get() on null" at /Users/Tomazi/Dev/SymfMongo/src/Cambio/CambioBundle/Controller/AuthenticationController.php line 18 

Больше редактирует:

ИТАК я иду эту работу ранее мой контроллер был определен как сервис и этот набор вверх сделал не работайте, как только я добавлю новый контроллер и не объявляю его как услугу, каждый магически работает:

routing.yml:

cambio_test: 
    path:  /test 
    defaults: { _controller: CambioBundle:Default:index } 

cambio_homepage: 
    path: /
    defaults: { _controller: cambio.authentication.controller:loginAction } 

services.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<container xmlns="http://symfony.com/schema/dic/services" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> 
    <services> 

     <!-- Controller --> 
     <service id="cambio.authentication.controller" 
       class="Cambio\CambioBundle\Controller\AuthenticationController"> 
     </service> 

    </services> 
</container> 

и контроллер по умолчанию имеет тот же код инициализации него любая идея, почему это не работает, когда контролеров decleared как сервис, но это работает, когда контроллер isynt определяется как один ...?

+0

Необходимо найти файлы журнала, чтобы узнать, где именно происходит эта ошибка. – michaJlS

+0

Просьба указать tracelog исключения. В фрагменте кода есть только одна функция 'get', и, очевидно,' $ this' не 'null'. –

+0

Эй Надеюсь, мое редактирование может помочь вам, ребята, поближе посмотреть, что происходит – John

ответ

0

Возможно, вы используете неправильное имя службы. В linked documentation они используют что-то еще:

$m = $this->get('doctrine_mongodb.odm.default_connection'); 
Смежные вопросы