2011-02-08 4 views
0

EDIT: предыдущий заголовок, потому что никто не читал вопрос: «Если я создаю AJAX-вызовы в MVC-фреймворке, часто бывает, что методы модели« getter »над моделью?»Контроллеры CodeIgniter и AJAX

Это все в заголовке: Если я хочу сделать вызов AJAX для удаления пользователя, этот код DB явно живет в модели $this->userModel->delete($id).

Если я делаю все вызовы CRUD через AJAX, у меня просто есть методы контроллера транзита, чтобы разоблачить эти вызовы модели URL?

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

etc? Это кажется глупым, но это также имеет смысл ... но это также заставляет меня чувствовать, что я что-то упускаю. Это самый распространенный образец?

Спасибо!

ответ

1

Когда дело доходит до 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 
    } 
} 

, если вы поместите тот же чек в вашей модели, то вы бы создать несколько моделей, которые будут возвращать одни и те же данные независимо от местоположения.

+0

OK, отлично, спасибо за проверку работоспособности. У меня также есть методы «более высокого уровня» контроллера, многие из которых используют несколько таких «полезных» методов, но, похоже, их все равно следует отделить для индивидуального доступа по вызовам XHR. –

Смежные вопросы