1
工作在Laravel,我有我想提供給服務控制器,做一些修改,以在控制器動作,然後呈現出一個ViewComposer類。Laravel單不能跨控制器/ ViewComposer
我之前做過幾次這樣沒有問題,但由於某種原因,這次我通常的做法並不奏效 - 顯然我做了一些不同的事情,我開始懷疑我從根本上誤解了我在做什麼。
我有一個用的ServiceProvider該寄存器()方法:
public function register()
{
$this->app->singleton(HelperTest::class, function ($app) {
$pb = new HelperTest();
$pb->test = "jokes on you batman";
return $pb;
});
}
然後在我的控制,我做了以下內容:
private $helper;
public function __construct(HelperTest $pb)
{
$this->helper = $pb;
$this->helper->test = "hahah";
}
然後,我有一個viewcomposer執行以下操作:
private $helper;
public function __construct(HelperTest $pb)
{
$this->helper = $pb;
}
public function compose(View $view)
{
$view->with('output', $this->helper->test);
}
當我在刀片視圖中調用{{ $output }}
時,我期望看到hahah
,但是我得到jokes on you batman
。
我調試表明,所有這三種方法都肯定被調用。它在我看來像ViewComposer是由於某種原因實例化它自己的,新的類實例。我究竟做錯了什麼?
謝謝!
我做更多的調試,看來,撰寫()被調用之前的控制器動作。爲什麼會這樣? – Raiden616