Когда дело доходит до Ajax в MVC Framework, я обычно склоняюсь к тому, чтобы каждая функция имела определенное ключевое слово, такое как 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
}
}
если вы поместите ту же самую проверку в ваших моделях, то вы бы сгенерировали несколько моделей, которые возвращали бы одни и те же данные независимо от местоположения.