2010-04-13 58 views
3

是否有時您可能想要在mvc中使用多個控制器?什麼時候應該在mvc中使用多個控制器?

例如。

/controllers/foo.php

/controllers/bar.php

/controllers/foo/baz1.php

/controllers/foo/baz2.php

/controllers/bar/baz1.php

/controllers/bar/baz2.p hp

有人可以舉一些例子當我可能想要做到這一點和一些示例控制器名稱。

有一次我想到的可能是當你有一個主站點(對於用戶)和一個管理站點(對於客戶)。

所有反饋和建議表示讚賞

回答

4

通常控制器處理代表相應數據庫表的模型。因此,如果您有桌面用戶和帖子,您的應用將具有模型用戶和帖子,因此控制器用戶和帖子。這是典型的RoR方式,在許多PHP MVC框架中使用。此類應用程序中的URL看起來如下:

/controller/action/parameter1/parameter2/... 
i.e. 
/users/edit/1/ 
or 
/posts/new/ 

並且動作對應於控制器類方法。實際上,我認爲它在MVC架構中事實上已經變成了標準,因爲它看起來很自然和合乎邏輯。

+1

但如果你想做一件事情,不會只訪問1個表,但多個。例如。如果我創建了一個已標記的線程,則它跨越3個表(線程,標記和thread_tag_map)。典型的多對多關係。什麼控制器將被使用,以及什麼型號?你能否在這種情況下描述流程? – 2010-04-13 03:00:47

+0

模型彼此相關。想象一下,如果你使用/ posts/view/1 /顯示帖子。這意味着控制器使用的是Posts,而模型是Post,WHICH訪問相關模型的Tag和Comment。相關模型可以訪問彼此的方法來檢索數據。 – Sergei 2010-04-13 03:44:24

1

幾乎只要你有一個不同的任務來完成。如果您有涉及處理用戶的事情,請命名您的控制器用戶。無論如何,請適當命名操作(創建,編輯,更新,刪除,搜索等)。如果你有什麼東西只是搜索,把它命名爲search.whatever。等等。一種簡單的方法來記住這種事情是從RESTful RFC(對不起,不知道那個實際的RFC號碼是什麼),沿着something.com/noun/verb的行,其中名詞==所有 - 包含此控制器處理的「事物」和動詞==正在執行的動作(參見上文)。至少這是一種方法。

1

在您的應用程序中,如果您正在使用User,Employee,Department,那麼您將在3個類中定義它們,對吧?現在爲每個類創建控制器:UserController,EmployeeController,DepartmentController等。

例如:

用戶/添加/
用戶/編輯/ 1/
用戶/刪除/ 1/

僱員/添加/
僱員/編輯/ 1/
僱員/刪除/ 1/

部門/地址/
部門/編輯/ 1/
部門/刪除/ 1/

+0

但如果我得到了一切的方法,不能讓用戶輸入這個到瀏覽器,它會刪除的東西? – 2010-04-14 10:17:15

+0

你必須檢查請求是否被授權。如果未經授權,則重定向到登錄頁面。你必須爲此寫一個方法。 在ASP.NET MVC中,如果你使用[Authorize]屬性和你的方法(Actions),那麼這將防止未經授權的訪問。 – muktadiur 2010-04-20 04:36:26

相關問題