Работа контроллера на Framework Foton отличается от работы стандартных MVC фреймворков.
Здесь уже не нужно создавать метод под каждое представление да еще и рендерить на своей стороне.
На Framework Foton один контроллер это одна страница, в отличии от привычного — один метод — одна страница.
Сделано это потому что в большинстве веб приложений работа в контроллере состоит из боольшого числа запросов к модели, и здесь эти запросы можно разбить на категории и при этом не думать про рендеринг.
Как же писать контроллер
1. Создайте контроллер в namespace Controller\Site или Controller\Admin в зависимости от того открыт ли к нему доступ
2. Создайте сам класс, в имени класса укажите имя файла.
3. Создайте свой публичный метод без параметров, а лучше 2 или 3, выведите в return какую-то информацию.
4. Вызовите в представлении этого контроллера @arr{data}
5. Посмотрите, все результаты ваших методов записались в массив data, где ключом массива является название вашего метода, а значением его результат.
Варианты с request запросами
Вы также можете создать метод с атрибутами, например добавьте в один из ваших методов атрибут $href, далее используйте его для вывода. Теперь передайте на вашей странице get параметр href, он будет передан в ваш метод и выведен.
Вы можете передавать неограниченное число параметров, важно понимать, что метод сработает только когда все обязательные request данные переданы.
После использования параметр удаляется и не может использоваться в следующем методе, это сделано для того, чтобы не было путаницы и каждому методу отвечал свой набор параметров, а если параметры совпадают, значит нужно сделать объединение по одному методу и одной точке входа.
При этом если достаточно использовать один из методов система этого не запрещает, просто следующий метод не будет вызван.
По этой причине необходимо методы с большим количество параметров выносить наверх. Чтение методов идет также как они написаны в коде контроллера.
Пример:
public function news($section,$page){
//выводим новости из раздела section на странице $page
// сработает если указан и section и page
}
//здесь переменные $section и $page затираются, если отработал первый метод
public function newsMain($section){
//сработает только если $page не указана, а указана $section
}
Важно!!! При этом сами request данные не удаляются и вы также можете к ним обратиться через $FG→get()->page или $FG→post()→page
Если название post и get параметра совпадают, то в метод будет передано POST значение.