![](/img/trans.png)
[英]How to pass variable from one controller to another controller in laravel
[英]Laravel:how can I pass a variable from a controller to another?
我是編程方面的新手(還是一名學生),而Laravel確實很新。 我必須為消防員建立一個外聯網,因此,在大多數情況下,我從數據庫中需要的記錄是他們的個人數據,他們的議程以及諸如此類的東西。 也許我正在以錯誤的方式看待這個問題,但是我想以這種方式來構建我的項目:
BaseController __constructor包含獲取每個視圖中需要的數據的邏輯。 實際上,我使用“ View :: share”代碼返回了所有變量。
View::share('milite', $milite);
View::share('agenda', $agenda);
View::share('log_accessi', $log_accessi);
View::share('data_import', $data_import);
盡管我想使用另一個類,但AgendaController(它將擴展BaseController)從消防員的議程中獲取數據。 為此,我需要將變量$ milite從BaseController傳遞到AgendaController。
我真的不知道該怎么做! 有人可以解釋一下嗎? 我希望您能理解我的問題,因為英語不是我的母語。 非常感謝!
薩拉
跨控制器共享變量的方法有很多:
這不是執行此操作的正確方法。 首先,在BaseController的構造函數中使用各種邏輯將最終使您的應用程序變慢,因為無論它們是否需要,所有請求都必須通過這些邏輯語句。 實際上,控制器應該根本不進行交互,因為它們應該做的是處理傳入的HTTP請求並提供響應。
不過,為了給您一個答案,因為無論如何您都在擴展BaseController,所以至少要將邏輯移出BaseController構造函數並將其移至BaseController中的公共方法
class BaseController extends Controller
{
public function fillView()
{
$data = array('someData' => 'data');
return $data;
}
然后在您的AgendaController中,您可以通過繼承來訪問public方法:
<?php
class AgendaController extends BaseController
{
public function showAgenda(){
$dataFromBaseController = $this->fillView();
...
}
}
再次,這不是您應該怎么做。 通常要做的是將與邏輯相關的東西移動到另一個類中的方法(例如,如果要訪問數據庫,則可以是服務,或者可以是存儲庫),然后使用laravel的依賴項注入容器來訪問控制器中的這些方法。 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.