我有一個使用Symfony2和FOSRestBundle構建的REST API。這一切都很好,但是在一個服務中,我將數據從另一個服務組合到另一個服務中 - 這看起來很簡單,但事實並非如此。
我正在創建一個新的請求對象並添加了我的參數,從那裏我將請求發送到其他服務,但服務收到請求罰款,但是,當我嘗試使用$ this-> get it我好老Call to a member function get() on a non-object in ...
我知道我錯過了服務容器(我不完全明白爲什麼它可用時,我打電話打第一捆但不是第二),這一切都很好,但如何做我注入它或它的一個組件,所以我可以使用$this->get
來打我在services.yml中定義的自定義服務? (易於使用arguments: container: "@service_container"
將它們傳遞給服務容器)
將此捆綁包設置爲服務將不起作用,因爲FOSRestBundle不會將其稱爲服務。
在短:我希望能夠通過在bundle2中做
namespace MyVendor\Bundle1\Controller
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use MyVendor\Bundle2\Controller\Bundle2ClassName;
class Bundle1 {
//if i wanted to do this here it would work fine:
// $this->get('my.service.defined.in.service.yml');
$bundle2 = new Bundle2ClassName();
$returned_data = $bundle2->myFunction();
}
然後,一旦內部myFunction的從bundle2中獲取數據時,裏面bundle1如果我嘗試調用完全一樣的服務功能,我得到了可怕的GET錯誤。如果我通過FOSRest路由直接調用bundle2,我顯然沒有這個問題。
namespace MyVendor\Bundle2\Controller
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class Bundle2 {
//this does not work
$this->get('my.service.defined.in.service.yml');
//do some stuff then return response
return($response);
}
我讀過的所有服務容器文檔一遍又一遍,所以如果你要鏈接到他們,我會很感激,如果你能指出確切的部分,在那裏它說明了如何這種東西被處理。自從我幾個月前開始使用Symfony以來,這一直是我從未能夠完全理解的一個問題。
P.S.有足夠積分的人可以將FOSRestBundle添加爲標籤嗎?
謝謝!
謝謝! $ this->向前完美!我可以通過執行'\t $ bundle2_stuff = $ this-> forward('MyVendorBundle2Bundle:Bundle2:myFunction',array('request'=> $ request))來傳遞請求對象;'' – greg