笨控制器和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
}
}
如果你把你的模型非常相同的检查,那么你将有生成几个模型,无论位置如何,都会返回相同的数据。
好的,完美的,谢谢你的理智检查。我也有'更高级别'的控制方法,其中许多都使用了这些'实用'方法中的几种,但似乎他们仍然应该被拆分,以供XHR调用的单独访问。 –