Latest Posts

Шаблоны статических методов для модели в 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;
}

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

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(),
        )
    ),
));

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

Read more

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Скрипт работы с кредитной биржей Webmoney по API

Скрипт работы с кредитной биржей Webmoney по API

Не так давно Webmoney представили API для автоматизации выдачи займов через кредитную биржу http://credit.webmoney.ru

Данное АПИ позволяет провести в первую очередь выборку заёмщиков — кредитный скоринг, напрямую  через биржу. Ранее приходилось работать в обход и парсить данные.

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

Read more

Логирование операций в базу — Yii

Логирование операций в базу — Yii

Очень удобное расширение для логирования операций в базу данных.

Для этого нам потребуется скачать расширение

Затем прописать в config где секция ‘class’=>’CLogRouter’:

array(
‘class’=>’ext.LogDb’,
‘autoCreateLogTable’=>true,
‘connectionID’=>’db’,
‘enabled’=>true,
‘levels’=>’error,warning,info’,
),

Этого достаточно для записи всех необходимых событий в базу данных и последующего просмотра.

Если вам нужно изменить поля или добавить дополнительные данные для отображения, то это всё можно сделать в расширении в функции CreateTable или ProcessLogs класса LogDB

Read more

Система бронирования для softeksim.co.uk

Система бронирования для softeksim.co.uk

Система позволяет купить билет и забронировать время для аттракциона самолёта в Лондоне и Бирмингеме.

Аттракционом владеет компания Softek Sim,  адрес: http://www.softeksim.co.uk

1. Существует гибкая система тарифов для билетов, которые можно купить:

1

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

1

 

 

 

Read more

Реляционные связи Active Record Yii — в трёх словах

Реляционные связи Active Record Yii — в трёх словах

Что нужно запомнить?

Есть три основных типа связей в реляционных базах данных:

  1. Один ко многим [BELONGS_TO / HAS_MANY].
    Как пример:
    Есть пользователь в таблице user(A), и есть таблица заказов orders(B). Соответственно записи заказов B принадлежат одному пользователю в таблице А.  Заказы относятся к пользователю(BELONGS TO).
    Также если рассмотреть что у пользователя А есть много заказов В то для пользователя такая связь называется HAS_MANY (пользователь имеет много заказов).
  2. Один к одному [HAS_ONE].
    Одна запись может иметь в связях только одну запись в другой таблице.
  3. Многие ко многим [MANY_MANY].
    У одной записи может быть много категорий, а у категорий может быть много записей.

Записать связи нужно в вашем active record классе модели:

Read more

Онлайн редактор + загрузка изображений

Онлайн редактор + загрузка изображений

Очень удобная связка tinymce +  jbimages.

Достаточно проделать следующие шаги, чтобы получить возможность загружать и вставлять изображения прямо из редактора:

  1. Качаем сам tinymce
  2. Скачиваем и помещаем плагин jbimages в папку плагинов plugins
  3. Редактируем файл config.php чтобы указать папку, куда будут загружаться фотографии.
  4. Теперь всё готово. Вы можете легко загружать фотографии и ставить их прямо в редактор.

Важно уделить время безопасности, в конфиге вы можете поставить фильтр на входящие файлы чтобы не загрузить ничего лишнего.

Read more

Email extension проблема с кодировкой — Yii

Email extension проблема с кодировкой — Yii

Натолкнулся на проблему с русской кодировкой в расширении для yii — email

Хотя мы и устанавливаем UTF-8 кодировку на письма, русский текст идет в западноевропейской кодировке.

Решением этой проблемы стало добавление строки

mb_internal_encoding($this->contentType);

После строки 140:

mb_language($this->language);

Также не забудьте в конфиге установить Ru в качестве language.

Read more

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); // подставляем нужные параметры


Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more