Частоиспользуемые шаблоны, решающие некоторые задачи
Очень удобно в процессе тестирования. В случае нахождения ошибки у заказчика - можно попросить перейти в режим отладки и достать происходящие внутри запросы
if (isset($_GET['debug']))$_SESSION['debug']=$_GET['debug'];
if (!empty($_SESSION['debug']))c\core::$debug=$_SESSION['debug'];
c\core::$version=time();
c\tables::$header['date_create']['fill']=function($row,$field){
return date('d.m.Y H:i:s',strtotime($row[$field]));
};
c\tables::$row_attributes['status']=function($row){
return $row['status'];
};
tr[status="1"]{ /*Статус новый*/
background-color: #fe9;
}
tr[status="2"]{ /*Статус старый*/
background-color: #9ef;
}
c\tables::$header=c\datawork::describeToTableHeader(c\dbwork::describeTable($table));
Правильный обработчик отправки данных через форму
В данном примере $data - начальное значение полей формы
if (c\forms::isSubmit()){
c\forms::setData($data);
c\forms::setDataForce();
try {
$data=c\forms::getData();
if (c\forms::isInvalid($data,true))throw new Exception(c\translate::t('Form invalid'));
actionWith($data);
c\error::addSuccess(c\translate::t('Successfully saved'))->redirect();
} catch (Exception $exc) {
c\error::addError(c\translate::t('Error on submit').($exc->getMessage()?': '.$exc->getMessage():''));
}
}
//сразу после c\mvc::init();
if (c\mvc::getParamAsString() && substr(c\mvc::getParamAsString(),-1)!='/')c\mvc::redirect('/'.c\mvc::getParamAsString().'/');
<?php
require("core/3.5/global-config/corep.php");
c\mvc::init(__DIR__);
do @include c\mvc::content(); while (c\mvc::check());
c\mvc::header();
require c\mvc::viewPage();
c\mvc::footer();
<?php
c\tables::$header=array(
'HIERARHY_ID'=>array('name'=>'ID','sort'=>false),
'NAME'=>array(
'name'=>'Наименование',
'sort'=>false,
'fill'=>function($row){ return ($row['has_subtree']?'<span onclick="toggleSubtree(this);event.stopPropagation();" class="glyphicon glyphicon-chevron-down"></span>':''). $row['NAME']; },
'attributes'=>array('class'=>function($row){ return 'name level-'.min($row['level'],10); }),
),
//... Список остальных колонок
);
$sql="SELECT HIERARHY_ID,PARENT_HIERARHY_ID, NAME,*
from table
order by PARENT_HIERARHY_ID";
$rs=c\db::ea($sql);
$tree= c\datawork::tree($rs, 'HIERARHY_ID', 'PARENT_HIERARHY_ID','children',0);
c\tables::$data = c\datawork::flatTree($tree);
$table_params=array(
'row_attributes'=>array(
'group'=>function($row){ return $row['HIERARHY_ID']; },
'level'=>function($row){ return $row['level'];},
),
);
function toggleSubtree(object){
if ($(object).toggleClass('glyphicon-chevron-down glyphicon-chevron-right'));
var tr=$(object).closest('tr');
var level=parseInt(tr.attr('level'));
if ($(object).is('.glyphicon-chevron-down')){
// список должен раскрыться
tr.nextAll().each(function($key,item){
var curlevel=parseInt($(item).attr('level'));
if (curlevel<=level)return false;
if (curlevel==level+1)$(item).show();;
});
}else{
// список должен закрыться
tr.nextAll().each(function($key,item){
var curlevel=$(item).attr('level');
if (curlevel<=level)return false;
$('.name .glyphicon',item).removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-right');
$(item).hide();
});
}
}
$n=60;
// $n seconds timeout protection
$time = c\cache::get('timeout', function() {
return time();
}, $n);
if (time() < $time)do_something();
$var=c\cache::get('key','callback', strtotime('tomorrow') -time());
if (c\mvc::controllerPageInstant(__DIR__)){
c\mvc::controllerPage(__DIR__);
}else{
c\mvc::virtualRoute('_api');
}
c\mvc::layoutRemove();
c\core::$data['error_callback']=function($text,$type){
return true;
};
header('Content-Type: application/json');
<?=c\cache::get('your-template-cache-key', function(){
ob_start();
?>
<div>
...
</div>
<? return ob_get_clean(); });?>
$rs=[5,22,14,23];
$goods = new good();
$goods->whereIn('id',$rs);
if ($rs)$goods->order('field(id,'.implode(',',$rs).')');
// in /index.php
function myCallback($buffer){
return $buffer;
}
do @include c\mvc::content();
while (c\mvc::check());
c\mvc::header();
ob_start('myCallback'); // add this
require c\mvc::viewPage(false);
ob_end_flush(); // and this
c\mvc::footer();
Создано при помощи сервиса Core CMS