Контроллеры CodeIgniter и AJAX - PullRequest
       0

Контроллеры CodeIgniter и AJAX

0 голосов
/ 08 февраля 2011

РЕДАКТИРОВАТЬ: Предыдущий заголовок, потому что никто не читал вопрос:"Если я делаю вызовы AJAX в среде MVC, часто ли используются методы контроллера 'getter' над моделью?"

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

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

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

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

Спасибо!

1 Ответ

1 голос
/ 09 февраля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...