+9.05
12 читателей, 13 топиков

Правило валидации "safe", для тех, кто в танке

Оригинал — Understanding «Safe» Validation Rules

Вступление

Зачастую, начинающие Yii программисты, непонимают для чего нужно правило валидации «safe». Эта статья должна прояснить путанницу, и заодно объяснить, что такое саммовое присваивание.

Вкраце. Правила валидации служит двум целям:
  1. Убедиться, что данные переданные через форму, введены корректно.
  2. Определить, какие поля могут быть назначены переменной $model.
Они связанны, но она не являются одним и тем же.

Взглянем на набор правил проверки

Перед тем, как начать работу, мы продемонстрируем Вам типовые правила проверки данных модели. Наш пример взят из блога Tutorial. Модель «User» находится в protected/models/User.php.
// protected/models/User.php
    ...
    public function rules()
    {
        return array(
            array('username, password, salt, email', 'required'),
            array('username, password, salt, email', 'length', 'max'=>128),
            array('profile', 'safe'),
        );
    }

Правила проверки определяются из массива array(...). Содержит список атрибутов, имя валидатора, а также дополнительные параметры, необходимые различным валидаторам. Также может содержать ключевое слово «on», указывающее сценарий валидации, но мы не будем описывать это в статье.

Читать дальше →

Использование класса CButtonColumn для изменения кнопок в виджете CGridView

Оригинал: Using CButtonColumn to customize buttons in CGridView

Вступление

CGridView является одним из наиболее гибких виджетов в Yii и примером такой гибкости является класс CButtonColumn. Он используется для создания кнопок для управления моделью в каждой строке таблицы. В этой инструкции мы объясним способы, которыми пользователь может настроить CButtonColumn для своих потребностей.

Читать дальше →

Идея для архитектуры приложения на yii. Часть 1. Введение и конфиги

Добрый день. Сегодня я хотел бы поделиться простым рецептом для архитектуры приложений малого и среднего размера на Yii. Идея навеяна разработчиком 2GIS.API Алексеем Спиридоновым. Видео с конференции: www.youtube.com/watch?v=GyX5uAnApKg&feature=plcp

Основная проблема начинающих разработчиков в том, что они не понимают принципа MVC. Приведу толкование MVC с точки зрения википедии в миллионный раз:
Model-view-controller (MVC, «Модель-представление-поведение», «Модель-представление-контроллер») — схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента так, что модификация одного из компонентов оказывает минимальное воздействие на остальные.

Итак, что мы должны сделать согласно этой схеме? Правильно, отделить логику от представления. Но это еще не все, логику приложения необходимо разделить на сервисные слои. В этом и заключается вся сила mvc.

Для начала определим, что же должен делать каждый слой MVC.

M. Модель
Модель данных. То есть все что у нас хранится в базах данных (mysql, sqlite, couch, redis и тд). Работа с данными происходит только внутри модели.

V. Представление
Представление данных. Сценарии, описывающие, как данные моделей будут представлены конечному пользователю. Это может быть html страница, json массив, qr код и т.д.

C. Контроллер
Это сердце приложение. Контроллер определяет как ведёт себя приложение. Какие модели и представления использует. Тут-то чаще всего и городят разработчики полную ересь. Начинают обновлять данные в базе данных, генерируют html сущности, и это только самые безобидные примеры.

Собственно основная мысль архитектуры