關於Sf2控制器/容器,大量墨水流入。我面臨着如下的情況:Symfony2在控制器中獲得公共服務
app/console container:debug security
...
> 4
[container] Information for service security.token_storage
Service Id security.token_interface
Class Symfony\Component\Security\Core\Authentication\Token ...
...
Public yes
LoginBundle \ DefaultController.php
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller
{
public function indexAction()
{
dump(Controller::get('security.token_storage'));
...
工程確定,很明顯。
LoginBundle \ UserUtilsController
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class UserUtilsController extends Controller
{
public function getRoleById()
{
dump(Controller::get('security.token_storage'));
...
投:Error: Call to a member function get() on a non-object
在Sf2 Book - Service container,我發現:
在這個例子中,控制器擴展的Symfony的基本控制器,它給你訪問服務容器本身。然後,您可以使用get方法從服務容器中查找並檢索my_mailer服務。
的誤解是: - 兩個控制器延伸其自身延伸ContainerAware它實現ContainerAwareInterface哪組容器基本控制器。 - 兩個控制器訪問相同的公共服務容器。
那麼,爲什麼第二個控制器它不工作?
我知道這個問題是舊的,但我不想注入控制器作爲服務,我認爲這是多餘的,錯誤的重新聲明公共服務services.yml
預先感謝您。
我會在兩天內接受我的回答:) –