Чтобы в контроллере было проще ориентироваться, приведу диаграмму, которую мы составили во второй части этого цикла. Конструктор (строки 5-10). Тут сбрасываем сообщение об ошибке и включаем профайлер (в релизе его, естественно, нужно будет отключить). Метод index (строки 15-27). Формирует главную страницу сайта. На этой странице должны быть размещены таблица с усредненными результатами проверок, форма добавления нового URL и кнопка, запускающая проверку всех URL. Поэтому в начале метода мы загрузили модель (resultmodel) и хелпер form (содержит методы для создания форм). После этого с помощью модели получаем данные (строка 19), формируем массив с данными для представления ($pageData) и загружаем представления. Примечание. Сами представления мы рассмотрим немного позже, но думаю, уже по названию понятно, что header формирует заголовок страницы, mainpage – основное содержимое главной страницы, а footer – хвостовик. Метод urldetails (строки 34-50). Формирует страницу с подробными данными о проверках выбранного URL. Работает аналогично методу index, но, естественно, используются другой метод модели (getUrlData) и представление (urldetails). В начале метода (строки 35-37) выполняется проверка параметра $urlId и если он имеет недопустимое значение, посетитель перенаправляется на главную страницу. Для добавления URL в базу данных служит метод addurl (строки 57-68). Здесь мы читаем url из массива $_POST и выполняем проверку. Проверка простейшая, выполняется с помощью регулярного выражения в методе _isValidURL (строки 86-89). URL считается правильным если содержит символы «://» и не содержит пробелов, кроме того в первой части URL могут быть только английские буквы и цифры.
Естественно, можно написать более сложное выражение для проверки, но я хотел оставить возможность добавлять локальные адреса (вроде http://localhost). Если URL прошел проверку, то он добавляется в базу данных. В противном случае – формируем сообщение об ошибке. После этого вызываем метод index, т. е. загружаем главную страницу. Метод removeresult (строки 97-101). Удаляет указанный результат проверки (используется метод removeResult модели resultmodel). После удаления загружаем страницу с подробными данными о выбранном URL. removeurl (строки 108-114) – удаляет URL из базы данных. Здесь тоже ничего особенного.
Используем метод deleteURL модели urlmodel. Вызовы методов removeresult и removeurl происходят при клике по ссылке «Удалить», которая находится напротив соответствующего URL или результата проверки. Осталось рассмотреть метод ping. Но он получился довольно объемный, поэтому о нем я напишу отдельный пост. До встречи! P. S. Ссылки на все статьи и примеры цикла я публикую здесь.