В этой статье мы собрали самые часто задаваемые вопросы о новом релизе Framework Foton версии 12.352
Постараемся максимально подробно и доступно разобрать каждый из вопросов.
Итак начнем:
1. Можно ли подменять типы запросов, например такие как ajax или ajaxsite через роутинг?
Да, это можно сделать двумя основными способами:
Вот таким способом мы можем все mvc запросы переводить на siteajax запросы
<?
public function format_mvc(){
$this->view->format = 'ajaxsite';
}<?
public function page_html(){
$this->view->format = 'ajaxsite';
}Важно помнить, Handler обработчики работают только при включенной настройке handler и только для пользователей не авторизованных в админ. панели сайта
2. Другой способ - это воспользоваться стандартным роутингом системы в таблице router по ссылке /lists/html/router
При создании записи, например test.ajaxsite и указании для нее mvc шаблона news при обращении через браузер по url test.ajaxsite будет отрабатывать mvc шаблон news. Даже если запроса test.ajaxsite изначально в системе никогда не существовало система при загрузке создаст его из таблицы роутинга.
Поэтому прежде чем работать с новым проектом важно посмотреть Handler обработку и таблицу роутов, чтобы понимать что данные с которыми вы работаете достоверны.
2. Можно ли создавать Ajax запросы внутри представлений, а не писать отдельно по роутингу ajaxsite в директории ajax?
Да, в новой версии появилась такая возможность. Сейчас распишем по шагам, что для такой настройки необходимо сделать:
Важно!!! Данный url сработает, только если метод ajaxlist не будет найден в основном Ajax контроллере.
3. Можно ли создавать вложенные контроллеры?
Да, можно, создаете в директории app/controller/site директорию по названию файла вашего контроллера, например main, внутри создаете файл вашего контроллера, например categories внутри создаете класс по такому примеру
<?
namespace Controller\Site\Main;
class Categories{
}Далее работаете как с обычным контроллером, создаете свои методы и обращаетесь к ним по пути \Controller\Site\Main\Categories
4. Как получить значение метода контроллера в шаблоне сайта?
В шаблоне сайта доступен объект $data, в нем содержится массив методов текущего контроллера, для получения всего массива значений вы можете обратиться вот так
FotonArr($data->view->data);
Для получения результата конкретного метода лучше обращаться через проверку, например вот так:
<?
if(isset($data->view->data['ShemaOrg'])){
echo $data->view->data['ShemaOrg'];
}?>5. Как создавать миграцию для создания таблицы?
Для создания таблицы с нуля достаточно зайти в админ панели на сущность вашей таблицы через меню в любом интерфейсе, система создаст миграции и вашу таблицу без вашего участия. Если же вы по какой то причине хотите самостоятельно создать миграцию на вашу таблицу вы можете сделать это таким образом:
php foton migrate create model mytable interfaces
Где mytable имя вашей таблицы в методе interfaces вашей модели model