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

Типы данных находятся в таблице html, и являются основой для вывода пользовательских элементов в интерфейсах.
Типы данных относятся к данным сайта, так как выводят их и являются неотъемлемой частью самого сайта, независимо от интерфейсов.
Некоторые данные типов данных хранятся в таблице html
Тип данных состоит из полей:

название — поле name,
название латинское – поле kod,
html код – поле html,
аргументы -поле argument,
php код – поле function

При указании в поле html '2'
мы выбираем  второй тип, и в поле function мы можем указать php код для вывода без указания  тегов php кода
Также можно использовать для вывода данных методы модели, например методы модели html,
таким образом они также перенесутся при копировании шаблона сайта. Используя код, например:
     
$this->core->view()->tpl->html->echo->end(['name'=>'test','value'=>'test']);
             
подключится метод echo класса типа данных html, с указанными аргументами.
В самом методе  вызываются виджеты с аргументами, таким образом можно обращаться к любым методам любых типов данных.
Если указать html код в поле html, а в поле аргумент и php код (функция) указать 0, то тип будет выводится как html код.
<span class='default_span'>[[lang]]</span><input type='mail' name='[[name]]' value='[[value]]'>

так как это html код, то обычные переменные и аргументы здесь уже не работают.
Стоит заметить, что поля с типом html работают быстрее при выводе, в отличии от полей с php кодом.
[[lang]] — в данном случае пользовательский шорт-код, если его нет в интерфейсе этот код просто удалится,
создавать можно любой шорт-код, только если на стороне интерфейса его интерпретируют.
Для корректной работы с другими интерфейсами пишите правильно css,js код типа Данных,
чтобы при отсутствии значения пользователю не отображался пустой непонятный блок и не появлялись js ошибки в консоли.
Любой тип Данных может содержать css,jsphp код для ajax запросов.
О выводе данных вам не нужно заботится, об этом позаботится интерфейс, вам только нужно правильно расположить свои данные.
В директории ajax корня сайта есть директория по названию подключенного сайта 
($FS->sitedir), в директории /app/type/$FS->sitedir и лежат типы данных вашего сайта.
Напомним, что типы данных относятся именно к сайту, не к админ. панели, и копируются при создании шаблона сайта, но не при создании интерфейса.
В этой директории находятся папки css,js,php,tpl для хранения css,js,php файлов соответственно.
Если мы только что создали новый тип данных у него должно быть уникальное в вашей таблице название на латинском (поле kod)
этим названием и называем файл в директории css будет  yourCode.css, в директории js нашкод.js, в директории php нашкод.php,  в директории tpl  yourCode_mymethod.php.
Соответственно  css файл будет подключен при подключении вашего типа данных,  js  будет подключен при подключении вашего типа данных, php должен  содержать php класс

<?php
 namespace Tpl;
 class yourCode extends \Foton\Model{


}?>

Внутри этого класса давайте создадим метод  mymethod

<?php
namespace Tpl;
class  yourCode extends \Foton\Model{
    public function mymethod(){
        return ['text'=> 'hello World'];
    }
}?>

Создадим файл в директории /app/type/site/tpl/yourCode_mymethod.php
со следующим содержимым

<?php
global $FotonCore;
//выводим css,js типа данных
$FotonCore->view()->tplfront->yourCode->end();
echo $data['text'];
?>

Теперь при обращении / yourCode/mymethod.tpl на экране появится 'hello World'.
Вы можете через js код вашего типа данных отправлять любые данные через ajax на ваши методы контроллера этого типа данных, и обрабатывать их на стороне контроллера и возвращать результат пользователю.
Таким образом типы данных позволяют полностью перенести работу по обработке стандартных полей на плечи сайта, а интерфейсам дать возможность создавать сами интерфейсы для обработки результатов данных и работы с моделями сайта.

Для создания типа данных, чтобы он автоматически подключался в вашем интерфейсе можно даже не создавать запись в базе данных, достаточно создать в классе вашего контроллера метод index с параметрами index($id,$field)
$id - это id текущей записи
$field - название текущего поля в базе
С помощью этих данных вы можете делать свое поле уникальным на js, а также передавать название поля для сохранения.
Например вот так:
<?php
namespace Tpl;
class Editor extends \Foton\Model{
    public function index($id,$field){
        global $FotonCore,$FS,$FG;
        $fieldid = $FS->orm['inc'];
        if($id>0){
            $resultup = $FotonCore->getlist([$FG->get()->table,'where'=>[$fieldid=>$id]]);
            $data = $resultup[0][$field];
        }
        else{
            $data = '';
        }
        return $FotonCore->view()->widget->editor->end(['name'=>$field, 'class'=>$field.$id,'data'=>$data]);  
    }
}

Создайте файл tpl/editor_index.php и добавьте в него код для вывода представления, в данном случае файл можно оставить пустым ,так как представление вызывается в самом контроллере.

Также можно передать параметры из контроллера и реализовать их на уровне представления, например вот так:

<?php
namespace Tpl;
class Editor extends \Foton\Model{
    public function index($id,$field){
        global $FotonCore,$FS,$FG;
        $fieldid = $FS->orm['inc'];
        if($id>0){
            $resultup = $FotonCore->getlist([$FG->get()->table,'where'=>[$fieldid=>$id]]);
            $data = $resultup[0][$field];
        }
        else{
            $data = '';
        }
        return ['name'=>$field, 'class'=>$field.$id,'data'=>$data];  
    }
}

Тогда в  tpl/editor_index.php  нужно добавить:

<?php
global $FotonCore;
$FotonCore->view()->widget->editor->end($data);  

Теперь добавьте ваш тип данных с названием поля в аргументе, например editor:text или editor:description в массиве интерфейса вашей модели данных 

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