Framework Foton
Инструмент для профессиональной разработки web приложений
Особенности работы на Framework Foton

В этой статье мы собрали самые часто задаваемые вопросы о новом релизе Framework Foton версии 12.352

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

Итак начнем:

1. Можно ли подменять типы запросов, например такие как ajax или ajaxsite через роутинг?

      Да, это можно сделать двумя основными способами:

  • Первый способ - использовать для этого handler обработку, - это методы класса \Dev\Handler 

      Вот таким способом мы можем все 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?

Да, в новой версии появилась такая возможность. Сейчас распишем по шагам, что для такой настройки необходимо сделать:

  1. В директории /app/view/site/ajax/class создаем файл с названием по которому вы будете к нему обращаться, например ajaxlist
  2. Создаем класс в  пространстве имен ControllerAjaxSite, в нашем случае ajaxlist и создаем публичные методы так же как и для стандартного mvc контроллера, только сигнатуры как request данные здесь не работают и поэтому берем наши запросы напрямую из объекта $FG->get() или $FG->post()
  3. В директории /app/view/site/ajax/view создаем файл с тем же названием ajaxlist.php для обращения к представлению
  4. Работаете с массивом $data как и в обычном представлении, например пишем FotonArr($data);
  5. Далее сохраняем данные и пробуем обратиться к нашей новой ajax сущности по адресу /ajaxlist.ajaxsite.

      Важно!!! Данный 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


      


 

© Copyright 2017 - 2026 Разработано на Framework Foton
Продукт зарегистрирован в Роспатенте