2015-09-15 23 views
10

içinde null değerini döndürür Şu anda oturum açmış olan kullanıcının alabileceği bir Hizmetim var, bu da yalnızca dev ortamında çalışırken biraz zaman alıyor. Bunun tekrar Twig şablonu güncellemek kadar gerektiği gibi sayfa her şey çalışıyor yenilersenizTokenStorage, bazen Service

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

: Ben Twig şablonlarını değiştirebilir ve ben hata alıyorum yenilemek zaman

sorun gibi görünüyor. Bu, sayfayı sürekli yenilediğim için çok yavaş gelişiyor.

şeyler şimdiye kadar yapmış: -

  1. dev ortamı önbelleği Temizlendi.
  2. Tarayıcı önbelleğini temizleyin.
  3. kullanıcı kesinlikle kaydedilir Onaylandı (aksi takdirde ikinci tazelede işe yaramaz)

kimse soruna neden ne olabilir herhangi bir fikir var mı?

services.yml

myservice: 
    class: AppBundle\Services\MyService 
    arguments: ["@doctrine.orm.entity_manager", "@security.token_storage"] 

MyService.php

<?php 
namespace AppBundle\Services; 
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; 

class MyService 
{ 
    private $em; 
    private $token; 

    public function __construct($entityManager, TokenStorageInterface $tokenStorage) 
    { 
     $this->em = $entityManager; 
     $this->token = $tokenStorage->getToken(); 
    } 

    public function doSomething() 
    { 
     $user_id = $this->token->getUser()->getID(); 
     return; 
    } 
} 

dal Şablon

{{ myservice.doSomething }} 

Not:Bu hala

+0

kontrolü: http://stackoverflow.com/questions/24916638/symfony-dependency-injection-in-twig-extension –

+0

Merhaba, soruna neden olanı bulmak mı? Ben de yaşıyorum. Teşekkürler! – iamjc015

cevap

3

Emin değilim soruna neden çıplak kemikleri koddur ancak sınıf (tokenStorage sınıfından değil belirteci kendisine bir işaretçi korumak gerektiği gibi bana görünüyor bu değişebilir gibi). Hizmetiniz sonra bu şekilde görünecektir:

class MyService 
{ 
    private $em; 
    private $tokenStorage; 

    public function __construct($entityManager, TokenStorageInterface $tokenStorage) 
    { 
     $this->em = $entityManager; 
     $this->tokenStorage = $tokenStorage; 
    } 

    public function doSomething() 
    { 
     $user_id = $this->tokenStorage->getToken()->getUser()->getID(); 
     return; 
    } 
}