2011-02-08 58 views
0

編輯:一標題,因爲沒有人在看這個問題:「如果我做AJAX在MVC框架調用,它是常見的有在模型‘吸’控制方法」笨控制器和AJAX

這是所有標題:如果我想進行一次AJAX調用來刪除一個用戶,該DB代碼清晰地存在於模型$this->userModel->delete($id)中。

如果我通過AJAX進行所有的CRUD調用,是否只有passthrough控制器方法將這些模型調用公開給URL?

function delete($id) { 
    $this->userModel->delete($id); 
} 

etc?這看起來很愚蠢,但它也是有道理的......但它也讓我覺得我失去了一些東西。這是最常見的模式嗎?

謝謝!

回答

1

當涉及到MVC框架下的Ajax時,我通常傾向於使用具有指定關鍵字(如fetch/set)的每個函數。 像這樣

class Users extends Controller 
{ 
    public function Fetch($id){} 
    public function Create(){} 
    public function Update($id){} 
    public function Remove($id){} 
} 

要回答你的問題:

控制器的任務是決策者,所以,你會控制器爲安全起見內進行認證檢查等。

想想這樣,您不會像在用戶前端中那樣使用相同的控制器來更改管理記錄,但您會使用相同的模型。

模型應該用在比前端更多的地方,因此您不會在模型方法中放置會話檢查,輸入驗證,因爲您將根據動作發生的位置執行不同的檢查。

你的前端控制器將沿着線的東西:

public function Fetch($id) 
{ 
    if($this->session->get_userdata("auth_level") & USER_AUTH_LEVEL_READ) 
    { 
     //Show data 
    } 
} 

其中作爲管理將有:

public function Fetch($id) 
{ 
    if($this->session->get_userdata("auth_level") & IS_ADMINISTRATOR) 
    { 
     //Show data 
    } 
} 

如果你把你的模型非常相同的檢查,那麼你將有生成幾個模型,無論位置如何,都會返回相同的數據。

+0

好的,完美的,謝謝你的理智檢查。我也有'更高級別'的控制方法,其中許多都使用了這些'實用'方法中的幾種,但似乎他們仍然應該被拆分,以供XHR調用的單獨訪問。 –