Шаблоны статических методов для модели в Yii
Шаблоны статических методов для модели в Yii
Очень часто нужны примеры методов для работы с моделями в yii.
Привожу частые шаблоны:
public static function getById($id)
{
$data= MODEL::model()->findByPk($id);
return $data;
}
public static function getSomethnigBySomeId($id)
{
$criteria=new CDbCriteria;
$criteria->order = 'sorted ASC';
$criteria->condition='cat_id=:id';
$criteria->params=array(':cat_id'=>$id);
$datas=MODEL::model()->findAll($criteria);
return $datas;
}
public static function getByAttr($attr)
{
$data= MODEL::model()->findByAttributes(array('attr' => $attr));
return $data;
}
CGrid view Yii — шпаргалка
CGrid view Yii — шпаргалка
Шпаргалка для вывода данных из дата провайдера в CGridView.
1. Сам провайдер данных:
// выводим рефералов пользователя
$partnersProvider = new CActiveDataProvider('User', array(
'criteria' => array(
'condition' => 'partner_id=' . $user->id ,
'with' => array(),
),
'pagination' => array(
'pageSize' => 5,
),
));
2. CGridView:
$this->widget('zii.widgets.grid.CGridView', array(
'itemsCssClass' => 'b-setting_history',
'htmlOptions'=>array(),
'summaryText'=>'', // чтобы не показывать summary
'dataProvider' => $partnersProvider,
'columns' => array(
array(
'name' => 'Date',
'type' => 'raw',
'value' => '$data->reg_date',
'cssClassExpression' => '',
'htmlOptions'=>array(),
'headerHtmlOptions'=>array(),
),
array(
'name' => 'User',
'type' => 'raw',
'value' => '$data->login',
'cssClassExpression' => '',
'htmlOptions'=>array(),
'headerHtmlOptions'=>array(),
)
),
));
Шпаргалка будет добавляться полезными свойствами, которые можно применить к провайдеру данных и виджету.
HTML->PDF API облачное решение
HTML->PDF API облачное решение
Встретил очень удобный сервис автогенерации PDF документов из HTML.
Не требует никаких установок на сервер и библиотек (ну кроме обертки над API).
Конечно есть минус — не более 100 документов в месяц (остальное платное).
Сам сервис: https://pdfcrowd.com
Очень простое API для создания документов:
require 'pdfcrowd.php'; try { // create an API client instance $client = new Pdfcrowd("Sassoft", "ВАШ ТОКЕН"); // convert a web page and store the generated PDF into a $pdf variable $pdf = $client->convertURI('НАШ URL html документа'); // set HTTP response headers header("Content-Type: application/pdf"); header("Cache-Control: max-age=0"); header("Accept-Ranges: none"); header("Content-Disposition: attachment; filename=\"google_com.pdf\""); // send the generated PDF echo $pdf; } catch(PdfcrowdException $why) { echo "Pdfcrowd Error: " . $why; } После этого ПДФ будет сохранён моментально. Также можно просто сохранить на сервер: $pdf_from_html = $client->convertHtml($html, fopen($fileName, 'wb'));
Leave a Comment
Скрипт работы с кредитной биржей Webmoney по API
Скрипт работы с кредитной биржей Webmoney по API
Не так давно Webmoney представили API для автоматизации выдачи займов через кредитную биржу http://credit.webmoney.ru
Данное АПИ позволяет провести в первую очередь выборку заёмщиков — кредитный скоринг, напрямую через биржу. Ранее приходилось работать в обход и парсить данные.
Тем самым я обновил систему кредитного скоринга. Отныне при помощи скрипта можно не только автоматически найти подходящие заявки для кредитора, но и сразу же выдать займ.
Логирование операций в базу — Yii
Логирование операций в базу — Yii
Очень удобное расширение для логирования операций в базу данных.
Для этого нам потребуется скачать расширение
Затем прописать в config где секция ‘class’=>’CLogRouter’:
array(
‘class’=>’ext.LogDb’,
‘autoCreateLogTable’=>true,
‘connectionID’=>’db’,
‘enabled’=>true,
‘levels’=>’error,warning,info’,
),
Этого достаточно для записи всех необходимых событий в базу данных и последующего просмотра.
Если вам нужно изменить поля или добавить дополнительные данные для отображения, то это всё можно сделать в расширении в функции CreateTable или ProcessLogs класса LogDB
Система бронирования для softeksim.co.uk
Система бронирования для softeksim.co.uk
Система позволяет купить билет и забронировать время для аттракциона самолёта в Лондоне и Бирмингеме.
Аттракционом владеет компания Softek Sim, адрес: http://www.softeksim.co.uk
1. Существует гибкая система тарифов для билетов, которые можно купить:

2. Выбираем нужный нам билет, вводим свои данные:

Реляционные связи Active Record Yii — в трёх словах
Реляционные связи Active Record Yii — в трёх словах
Что нужно запомнить?
Есть три основных типа связей в реляционных базах данных:
-
Один ко многим [BELONGS_TO / HAS_MANY].
Как пример:
Есть пользователь в таблице user(A), и есть таблица заказов orders(B). Соответственно записи заказов B принадлежат одному пользователю в таблице А. Заказы относятся к пользователю(BELONGS TO).
Также если рассмотреть что у пользователя А есть много заказов В то для пользователя такая связь называется HAS_MANY (пользователь имеет много заказов). -
Один к одному [HAS_ONE].
Одна запись может иметь в связях только одну запись в другой таблице. -
Многие ко многим [MANY_MANY].
У одной записи может быть много категорий, а у категорий может быть много записей.
Записать связи нужно в вашем active record классе модели:
Онлайн редактор + загрузка изображений
Онлайн редактор + загрузка изображений
Очень удобная связка tinymce + jbimages.
Достаточно проделать следующие шаги, чтобы получить возможность загружать и вставлять изображения прямо из редактора:
- Качаем сам tinymce
- Скачиваем и помещаем плагин jbimages в папку плагинов plugins
- Редактируем файл config.php чтобы указать папку, куда будут загружаться фотографии.
- Теперь всё готово. Вы можете легко загружать фотографии и ставить их прямо в редактор.
Важно уделить время безопасности, в конфиге вы можете поставить фильтр на входящие файлы чтобы не загрузить ничего лишнего.
Email extension проблема с кодировкой — Yii
Email extension проблема с кодировкой — Yii
Натолкнулся на проблему с русской кодировкой в расширении для yii — email
Хотя мы и устанавливаем UTF-8 кодировку на письма, русский текст идет в западноевропейской кодировке.
Решением этой проблемы стало добавление строки
mb_internal_encoding($this->contentType);
После строки 140:
mb_language($this->language);
Также не забудьте в конфиге установить Ru в качестве language.
Criteria примеры выборки — Yii
Criteria примеры выборки — Yii
Просто запись про то, как правильно делать выборки в criteria:
$criteria->order = 'id DESC'; - сортировка по id (DESC - по убыванию N..0 , ASC - возрастанию 0..N)
$criteria->select='id'; // выбираем по одному полю
$criteria->condition='user_id=:user_id AND status=2'; // условие проверки
$criteria->params=array(':user_id'=>$user_id); // подставляем нужные параметры