笨控制器和AJAX

问题描述:

编辑:一标题,因为没有人在看这个问题:“如果我做AJAX在MVC框架调用,它是常见的有在模型‘吸’控制方法”笨控制器和AJAX

这是所有标题:如果我想进行一次AJAX调用来删除一个用户,该DB代码清晰地存在于模型$this->userModel->delete($id)中。

如果我通过AJAX进行所有的CRUD调用,是否只有passthrough控制器方法将这些模型调用公开给URL?

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

etc?这看起来很愚蠢,但它也是有道理的......但它也让我觉得我失去了一些东西。这是最常见的模式吗?

谢谢!

当涉及到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调用的单独访问。 –