Часто на сайтах требуется выгрузка каких либо данных в формате excel (xslx). Естественно все хотят чтоб документ был уже сразу на выходе красиво оформлен. Недавно и мне потребовалось сделать такую выгрузку на php. Принято было решение использовать библиотеку PHPExcel – ее можно скачать тут
В скачанном вами архиве очень много документации и примеров, библиотека позволяет все от простого форматирования текста и формата ячеек до создания красивых графиков.
В моем случае, нужно было просто закрасить ячейку в нужный цвет в зависимости от значения в данной ячейке.
Подключаем библиотеку, указываем данные нашего документа:
require_once 'phpexcel/Classes/PHPExcel.php'; // Create new PHPExcel object $objPHPExcel = new PHPExcel(); // Set document properties $objPHPExcel->getProperties()->setCreator('test') ->setLastModifiedBy('test') ->setTitle('test') ->setSubject('test') ->setDescription('test') ->setKeywords('test') ->setCategory('test');
Для того чтоб сайт поднятый на вашем локальном компьютере стал доступен с другого компьютера подключенного к вашей сети необходимо сделать следующее:
1. Идем в C:/WebServers/usr/local/apache/conf/httpd.conf и указываем серверу apache слушать 80 порт (данная строка по умолчанию закомментирована в целях безопасности, т.к. у denwer есть права админстратора) мы ее раскомментируем.
#Listen 80 заменим на: Listen 80
Поиск по сайту – необходиый инструмент при создании любого сайта (от визитки до социальной сети). Этому посвящено уже много статей, найти которые не составит для вас труда, но все они рассказывают об очень посредственном поиске. Я хочу рассказать о том как легко и без особых усилий вы можете сделать умный поиск на своем сайте. Под умным поиском я понимаю следующее:
1) проверка правописания в поисковой фразе
2) выделение корней значимых слов (stemming)
3) релевантный поиск по значимым словам
читать далее »
Как сделать сортировку в Grid на фреймворке Yii? Как запретить сортировку по тем или иным колонкам? Как настроить сортировку таблицы по какому либо полю по умолчанию (или по дефолту)? С этими вопросами сталкиваются как новички так и опытные программисты, вобщем все кому приходилось работать с фреймворком Yii. На все выше перечисленные вопросы вы найдете ответ в этом посте.
На самом деле все делается очень просто, как вы знаете в CGridView передается CActiveDataProvider который определяется прям во вьюхе, либо в модели. В любом случае нам лишь нужно передать необходимый параметр sort.
В своем примере я покажу это на примере таблицы Banners. В методе search зададим список колонок по которым разрешена сортировка, для этого тоже имеется несколько способов:
1. Указать массив названий колонок по которым разрешена сортировка:
$dataProvider = new CActiveDataProvider('Banners', array( 'sort'=>array('attributes'=>array('id','name')), // названия колонок по которым разрешена сортировка ));
Для подключения CKEditor к YII, я использовал расширения из yiiext. Скачиваем его и распаковываем в каталлог с расширениями. У меня получилось: application.extensions.ckeditor
Теперь создаем в этом каталоге, папку assets и распаковываем туда файлы самого CKEditor, которые скачиваем с официально сайта (я скачал ckeditor 4). Виджет отказался запускаться ссылаясь на некоторые ошибки. Чтобы он заработал открываем файл ECKEditor.php идем на строку 69 и меняем:
private $skin='moono'; на public $skin='moono'; // тут также можем указать свою тему
Дальше функция setLanguage($value), меняем:
if(isset($this->allowedLanguages[$language])) $this->language=$language; на if(isset($this->allowedLanguages[$lang])) $this->language=$lang;
Теперь виджет можно подключить следующим образом, как стандартный виджет yii.
читать далее »
Обычно WYSIWYG редактор требуется когда необходимо написать админку, в которой обычному пользователю не знающему html, будет легко и удобно добавлять собственные тексты. Так было и в моем случае.
Скачиваем CKEditor с официального сайта:
Скачиваем бесплатный файл менеджер KCFinder:
Стандартным способом интегрируем CKEditor на сайт. Добавляем на страницу скрипт ckeditor.js (в моем случае скрипт лежит в корне сайта в каталоге ckeditor). KCFinder я распаковал в папку ckeditor, просто для удобства.
<script src="/ckeditor/ckeditor.js"></script>
Пусть на странице имеется поле textarea которое нужно заменить WYSIWYG редактором:
<textarea name="ckeditor"></textarea> <script> CKEDITOR.replace( 'ckeditor' ); </script>
Часто на сайте требуется автоматическое определение языка пользователя, в одном из проектов потребовалось решить эту задачу. Как всегда на ум пришло самое быстрое решение, определить язык с помощью константы HTTP_ACCEPT_LANGUAGE одного из суперглобальных массивов, она содержит в себе строку типа “en-US,en;q=0.8″. Это значение берётся из заголовков запроса страницы. Браузер отправляет соответсвующий заголовок исходя из собственных языковых настроек и не учитывает локаль ОС (если хотите протестировать решение, достаточно поменять языковые предпочтения браузера)
PHP
Этот код просто определяет, присутствует ли запись о языке в заголовке запроса и если да, то скрипт перенаправляет пользователя в соответствующий раздел сайта. Англоязычные пользователи будут перекинуты на http://site.com/en
Переменная $lang извлекает значение константы HTTP_ACCEPT_LANGUAGE. Тут мы используем функцию substr с тремя параметрами для того, чтобы извлечь нужный нам язык.
читать далее »
Некоторое время назад написал статью Межсайтовая авторизация – JSONP
Как вы помните объект JavaScript XmlHttpRequest, который реализует AJAX, не поддерживает кроссдоменные запросы по соображениям безопасности. Но иногда очень нужно через JS запросить какую-нибудь страничку или данные с другого сайта (например для автоматичексой регистрации и авторизации). В той статье мы рассматривали пример кросдоменной передачи данных с помощью тега script (то есть с помощью JSONP). Это довольно хороший способ, но существуют еще несколько способов передачи данных с одного сайта на другой.
Для решения этой задачи необходимо как минимум, чтобы вы как разработчик имели доступ к файлам на обоих серверах (с которого идет запрос и тот, где нужный файл), так как отдаваемые с удаленного сервера файлы должны быть в особом (для каждого отдельного решения) формате.
1) использование скриптов как прокси
Самы простой вариант — использовать собственный сервер как прокси. То есть вы из своего js-приложения обращаетесь к скриптам на этом же сервере и указываете ему адрес и формат возвращаемой информации (JSON, XML, HTML).
читать далее »
Столкнулся с такой проблемой, что json_encode при кодировании символов кириллицы преобразует её в 16-тиричный вид.
Например, массив вида:
Array( [0] => Array( [id] => 5 [name] => Россия ) [1] => Array( [id] => 16 [name] => Китай ) [2] => Array( [id] => 23 [name] => Япония ) )
после обработки функцией json_encode, принимает вид: читать далее »