kirkr

kirkr

+278
Репутация
1786
Рейтинг
#1 Поиск по стороннему компоненту? Icms2+ 10 декабря 2015 в 13:49
Поиск по всем полям сторонник компонентов?
Сегодня вечером залью проверю.
#2 $this->loadDataGrid как добавить фильтр? 5 декабря 2015 в 20:13
Никто не попадал на такое???
#1 $this->loadDataGrid как добавить фильтр? 4 декабря 2015 в 10:07
Добрый день

есть $this->loadDataGrid()

но мне надо выводить информацию где например по одному из столбцов не равно 1 или другому параметру, в документации не нашел как применить фильтр отбора, А НЕ СОРТИРОВКИ/

не совсем понятно как применяется:

'filter' => 'exact'

Документацию читал вот эту.
docs.instantcms.ru/dev/controllers/backend/grids
#3 InstaShop, доработка админ панели под клиента 26 ноября 2015 в 07:26
Переназначение переменной после цикла для чего делаете? Смысл???
#4 [ЕСТЬ РЕШЕНИЕ] Опять запросы SQL в ICMS2 24 ноября 2015 в 09:25
Спасибо! То что надо.

Рабочий скрипт для тех кому лень:

  1. public function last10() {
  2.  
  3. $this->joinInner('dogovora', 'd', 'i.id=d.id_abonent'); //Добавляем вторую таблицу где будет выбирать, и условия выбора
  4. $this->orderBy('id','DESC');//Делаем сортировку по id первой таблицы DESC
  5. $this->limit('10');//Ограничиваем вывод 10 строками результата
  6. $this->select('d.*');// Добавляем переменную нужную для SELECT
  7. return $this->get('abonent', 'id');//Возвращаем результат
  8.  
  9. // SELECT u.id, u.fio, d.adres_tariff, d.name_tariff FROM cms_abonent u INNER JOIN cms_dogovora d ON u.id = d.id_dogovor
  10. }
#1 [ЕСТЬ РЕШЕНИЕ] Опять запросы SQL в ICMS2 24 ноября 2015 в 07:48
И так продолжая работу столкнулся с простой задачей.
Надо из двух таблиц(основной) и дополнительной вывести информацию по последним 10 записям. Создаю модель.
  1.  
  2. public function last10() {
  3.  
  4. $this->joinInner('dogovora', 'd', 'i.id=d.id_abonent');
  5. $this->orderBy('id','DESC');
  6. $this->limit('10');
  7. return $this->get('abonent', 'id');
  8.  
  9.  
  10. }
ВАЖНО! может кому пригодиться, по умолчанию при JOIN INNER в ICMS2 присваивается переменная " i ". Так что ее использовать нельзя.


Стоит задача получить тип запроса:
  1. SELECT i.*, d.* FROM cms_abonent i INNER JOIN cms_dogovora d ON i.id = d.id_dogovor
По итогу логично получаем только:
  1. SELECT i.* FROM {#}abonent i INNER JOIN cms_dogovora as d ON i.id=d.id_abonent ORDER BY i.id DESC LIMIT 10
Вопрос, как добавть еще выбор полей d.*

Или все приводить к произвольным запросах SQL?
#5 Как вычислить сайт, который дает нагрузку? 24 ноября 2015 в 06:39
kreator,
Все сайты должны запускать процессы под своими пользователями, а не под апачем все сразу (безопасность и проще вычислить кто и чего)

команды в консоли top, ps ax покажут в первом случае процессы запущенные и сколько жрет, во втором все процессы и под кем конкретно запущены.

Далее можно посмотреть netstat чтоб увидеть куда ломатся запросы и из каких подсетей.
Далее гуглить по всем командам. Если первый пункт выполнить, то усе сразу увидите.

Да часто тормоза могут быть из-за подгрузки контента(рекламы, джава и т.п.) с других сайтов в не асинхронном режиме.(часто дает нагрузку на php)
#6 Формирование rtf из шаблона с данными из базы 17 ноября 2015 в 10:59

Остальные браузеры только загружали файл и продолжали висеть с крутилкой процесса, до тех пор пока не обновлю страницу.

Loadырь
Возможно им поболее header записать.

например
  1.  
  2. header('Content-Description: File Transfer');
  3. header('Content-Type: application/octet-stream');
  4. header('Content-Disposition: attachment; filename=' . basename($file));
  5. header('Content-Transfer-Encoding: binary');
  6. header('Expires: 0');
  7. header('Cache-Control: must-revalidate');
  8. header('Pragma: public');
  9. header('Content-Length: ' . filesize($file));
  10.  
  11.  
С принудительным указанием размера файла можно. источник:
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст




Да еще одно существенное, rtf это галимый ASCII CP1251, т.е. все из UTF-8 надо конвертнуть.

рабочий кусок:
  1.  
  2. $filename = __DIR__.'/dogovor.rtf';
  3. //echo $filename;
  4. $output = file_get_contents($filename);
  5. // Заменить заполнители в шаблоне требуемыми данными
  6. $output = str_replace( '\{number\}', $dogovorf['id_dogovor'], $output );
  7. $output = str_replace( '\{date\}', $dogovorf['date'], $output );
  8. $output = str_replace( '\{fio\}', $abonentf['fio'].' '.$abonentf['imya'].' '. $abonentf['otchestvo'], $output );
  9. $output = str_replace( '<<mm/dd/yyyy>>', $date, $output );
  10. // Отправить сгенерированный документ в браузер
  11. $rtff=ltrim($output);
  12. $rtff=mb_convert_encoding($rtff,cp1251); //конвертим
  13. $fh = fopen ("/upload/dogovora/".$dogovorf['id_dogovor'].".rtf", "w+");//указать путь до папки хранения(полный)
  14. fwrite ($fh, $rtff);
  15. fclose ($fh);
  16.  
  17.  
  18.  
#7 Формирование rtf из шаблона с данными из базы 17 ноября 2015 в 05:20

irkr, а вы при разработке каким браузером пользуетесь? У меня только мозилла нормально отдавала файл в поток и завершала отдачу корректно, хром и опера зависали

Loadырь
Чтоб зависаний не было надо отдачу заголовков сделать через "; "
Вот так:

  1.  
  2. header( 'Content-Type: application/msword' );
  3. header( 'Content-Disposition: inline; filename="cert.rtf"');
  4.  
второй вариант

  1.  
  2. header( 'Content-Type: application/msword' );
  3. header( 'Content-Disposition: attachment; filename="cert.rtf"');
  4.  
Inline заставит браузер открыть файл внутри себя(если такое поддерживается браузером), а аттачмент заставит скачать в любом случае.
#8 Формирование rtf из шаблона с данными из базы 16 ноября 2015 в 19:59

если не в поток выводить, а создать файл и отдать его ссылкой на скачивание?

Loadырь

Да так реально можно и все ок. Пока придется делать так :((
#9 Формирование rtf из шаблона с данными из базы 16 ноября 2015 в 19:51
Остается для меня загадка, всеж где вносится этот пробел чертов...
именно от extends cmsAction где-то прилетает.


А rtf выбран для возможности скачать документ из браузера?

Gumoff
rtf это почти Word документ, который легко править и вставлять свои переменные без левых библиотек.

Но из-за пробела в начале документа, редакторы типа ворда думают что файл с крякозябрами идет, а если пробела нет, то формируется правильно RTF. Удобно при создании договоров и заполнении всяких бланков.
#10 Формирование rtf из шаблона с данными из базы 16 ноября 2015 в 13:20
Loadырь, если просто вызывать, то выводит как надо без ошибок, если через экшн добавляется пробел.
#11 Формирование rtf из шаблона с данными из базы 16 ноября 2015 в 13:04

а так не пробовали?

Loadырь
Да, пробел не выводом инфы появляется, а такое ощущение, что самой icms.

Переменная чистая, пробовал и ltrim
#1 Формирование rtf из шаблона с данными из базы 16 ноября 2015 в 11:58
Создал экшен по выводу договора на основе шаблона. Самый простой способ нашел использовать rtf.
  1.  
  2. <?php
  3. class actionAbonentPrintDogovor extends cmsAction{
  4.  
  5. public function run($id=false){
  6. if(!$id){ cmsCore::error404();}
  7.  
  8. $dogovorf=$this->model->getIdADogovor($id);//Получаем все данные по договору
  9.  
  10. if(!$dogovorf){ cmsCore::error404();}
  11.  
  12.  
  13.  
  14.  
  15. // Сгенерировать заголовки, которые упростят браузеру
  16. // выбор требуемого приложения для визуализации
  17. header( 'Content-Type: application/msword' );
  18. header( 'Content-Disposition: inline, filename=cert.rtf');
  19.  
  20. $date = date( 'F d, Y' );
  21.  
  22. // Открыть файл шаблона
  23. $filename = __DIR__.'/dogovor.rtf'; //шаблон лежит в папке экшенов, сам файл без первого пробела.
  24.  
  25. $output = file_get_contents($filename);
  26.  
  27. // Заменить заполнители в шаблоне требуемыми данными
  28. $output = str_replace( '\{number\}', $dogovorf['id_dogovor'], $output );
  29. $output = str_replace( '<<Name>>', $name2, $output );
  30. $output = str_replace( '<<score>>', $score, $output );
  31. $output = str_replace( '<<mm/dd/yyyy>>', $date, $output );
  32.  
  33. // Отправить сгенерированный документ в браузер
  34. echo $output;
  35.  
  36. die();
  37.  
  38. }
  39. }
  40.  
  41.  
  42.  
die, чтоб всякая остальная инфа не лезла. Но почему-то вначале файла вставляется пробел. Понять не могу из-за чего. Кто-нибудь сталкивался?
#12 У всех пользователей на InstantCMS один и тот же IP, почему? 14 ноября 2015 в 18:43
Igor, Вангую что сервак у вас на ngnix и php вызывается отдельно. То да такое возможно. Надо править конфиги серваков.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.