2013-11-23 73 views
0

我正在第一次在symfony2中編寫一個web應用程序。 我剛剛決定將我的服務器端分成幾個控制器。 我在我的默認控制器中創建我的基礎對象,並且隨着用戶做出一些選擇,數據變得更加具體,我想在不同的控制器中處理它(每個數據類)。因爲這需要將新的子類綁定到它的基類。像Symfony2控制器之間的關係

// default controller 
class DefaultController extends Controller 
{ 
    public $trip; 

    public function startAction() 
    { 
     // get data from request etc. 
     // ... 
     $trip = new Trip(); 
    } 

    // handling everything else 
} 

然後,

// stage controller 
class StageController extends Controller 
{ 
    public $stage; 

    public function setStageAction() 
    { 
     // get data from request etc. 
     // ... 
     $stage = new Stage(); 
     $stage->SetTrip($trip); // doesn't work of course. 
    } 

    // handling everything else 
} 

試圖弄清楚如何處理這種情況上面,我一直在想,什麼是控制器的捆綁包中的關係是怎樣的。 找不到任何東西,只是「將控制器設置爲服務」,這可能是我的情況的解決方案,但無法幫助我理解體系結構。 我想也許這是一個愚蠢的問題, 仍然, 任何人?

+1

是否部分'//從請求獲取數據etc'得到DATABSE新創建的行嗎?請提供更多信息。您需要以某種方式堅持您的旅行之間的請求 - 你打算怎麼做?保存在會話,數據庫?我有問題了解你的目標。通常(如果沒有使用ESI或' - > forward()'),只有**一個**控制器在提供響應時調用。 – nifr

+0

謝謝nifr。你的評論讓我對事情更加清楚。我現在保存會話中的所有內容,最後只保存到數據庫中,因此控制器之間沒有真正的通信需求。 – user2516457

回答

0

在symfony中,您可以使用此服務。

每一項服務都會完成這份工作,並委派給您。 例如,有一個名爲StageManager的服務,然後創建一個函數create stage,然後執行所有實體創建和映射,然後可以將其保存到數據庫中。

在這裏您可以看到一個示例什麼是服務,如何創建一個以及如何在控制器中使用它。

Link

相關問題