Сообщения

Сообщения за Февраль, 2015

Yii (вложенное дерево страниц)

Имеем таблицу tbl_page вида
d_id
d_name
d_url 
department_d_id

где department_d_id = 0 - это корневой элемент

в первом приближении
<pre><code> $a = Department::model()->findAll();

for ($i = 0; $i < count($a); $i++)
{

    if ($a[$i]['department_d_id'] == 0 && $a[$i]['department_d_id'] != NULL)
    {
        $my[$i] = array
            (
            //'text' => CHtml::link($one->d_name, array($one->d_url)),
            'text' => $a[$i]['d_name'],
            'id' => $a[$i]['d_id'],
            'expanded' => false,
        );
    }
}
</code></pre> так мы создали корневые элементы

for ($x = 0; $x < count($my); $x++)
{
    for ($y = 0; $y < count($a); $y++)
    {

        if ($my[$x][id] == $a[$y]['department_d_id'])
        {
            $my[$x][children][] = array
                (
                // 'text' =>CHtml::link($one->d_name,array($on…

Yii для чайников \Yii for dummies (связанные списки dropDownList)

интересно это что какая то секретная информация. толком ниче найти не могу.
вот сделал по
www.yiiframework.com/wiki/24

первый список _form.php

<?php $criteria=newCDbCriteria(); $criteria->addInCondition('id_parent', array('0')); $opts=CHtml::listData(Department::model()->findAll($criteria), 'F_ID', 'F_Name'); //создаем список из базы $result=Motor::model()->findByPk($model->m_id); //ищем есть ли в базе такие записи if (isset($result)) $result=Department::model()->find('F_Name=:myParams', array(':myParams'=>$result->m_department)); //проверяем запись с таким именемif (isset($result)) $model->m_department =$result->F_ID; echo$form->dropDownList($model, 'm_department', $opts, array ( 'empty'=>Yii::t('default', 'выберите цех'), 'ajax'=>array ( 'type'=>'GET', 'url'=>CController::createUrl…

Yii для чайников \Yii for dummies (создание базы))

Изображение
для наглядности решил использовать mysql workbench . для ленивых (актуально 20.02.2015) подключение к локальной базе.


я создал такую базу

для общего понмания получаем --------- -- MySQL Script generated by MySQL Workbench-- 02/20/15 20:38:33-- Model: New Model Version: 1.0-- MySQL Workbench Forward EngineeringSET@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;SET@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;SET@OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';-- ------------------------------------------------------- Schema mydb-- -----------------------------------------------------DROPSCHEMAIFEXISTS `mydb` ;-- ------------------------------------------------------- Schema mydb-- -----------------------------------------------------CREATESCHEMAIFNOTEXISTS `mydb` DEFAULTCHARACTERSET utf8 COLLATE utf8_general_ci ;USE `mydb` ;-- ------------------------------------------------------- Table `mydb`.`tbl_department`-- ----------------…

Yii для чайников \Yii for dummies (инструментарий)

Если вы десктопщик -
1. Качаем новый денвер 
НАМНОГО лучше openserver
2.IDE
    2.1 Netbeans бесплатная ide
    2.2. php designer платная ide. сам не работал





Для всех
2. качаем первый фреймворк.
3. Качаем waterfox браузер х64 на основе фф

Редакторы Mysql
1. Встроенный Phpmyadmin
2. Workbench приколен тем что может рисовать uml диаграммы и строить на основании их таблицы
3. ems mysql бесплатен и довольно удобен. сам пользуюсь

Если у вас сервер
1.WinSCP -  это графический клиент SFTP для Windows с открытым исходным кодом. Он также поддерживает [устаревший] протокол SCP. Предназначен для защищённого копирования файлов между компьютером и серверами, поддерживающими эти протоколы.
2. Если у вас не настроен FTP на сервере, то подключить IDE не получится. Поэтому любой редактор с подсветкой кода вам в помощь. Сам использую npp .Поддержки синтаксиса yii нет, только php. но вроде нет редакторов (не ide) с поддержкой yii




Yii (установка)

Изображение
Для настольщиков:
1. Качаем новый денвер
2. качаем первый фреймворк. второй имеет безжалостно мало документации. для новичков не советую. может ситуация выправится, но и сейчас пользователей Yii  не очень много, так что это только мечты
3.Скорее всего у вас система x64. Так что смысла пользоваться дохлыми браузерами смысла ноль. Качаем waterfox
4.Естественно все устанавливаем.
5.Создаем папку под проект в денвере
я назвал yiiproj.lc
6.в ней не забываем папку www
7.получилось так:
Z:\home\yiiproj.lc\www\
Сюда я скопировал папку framework из распакованного архива, скаченного с yiiframework.com. В папке Z:\home\yiiproj.lc\www\yii\framework находится сам фреймворк: разные папки и файлы, в том числе yiic.bat. Он нужен для создания нового проекта - нового сайта. делаем так: открываем cmd: Пуск - выполнить -cmd В открывшемся черном окне написал:

Z:/usr/local/php5/php.exe z:/home/yiiproj.lc/www/yii/framework/yiic webapp z:/home/yiiproj.lc/www/yiiproj

 мы разнесли отдельно фреймворк и…

Yii сохранение в базе внешнего ключа и отображение его имени из другой таблицы

в общем как обычно идея проста - при сохранении нужно записывать внешний ключ на другую таблицу. при отображении находить по внешнему ключу имя во внешней таблице и отображать уже его.
1. список
в _form пишу

<div class="row"><?php echo $form->labelEx($model,'m_department');?><?php $criteria = new CDbCriteria(); $criteria->addInCondition('id_parent', array('0')); $opts = CHtml::listData(Department::model()->findAll($criteria),'F_ID','F_Name'); echo $form->dropDownList($model,'m_department',$opts,array('empty'=>''));?><?php echo $form->error($model,'m_department');?></div>
так нахожу список всех подразделений из другой модели
в своей модели пишу

protected function afterFind(){ $result = Department::model()->findByPk($this->m_department); $this->m_department = $result->F_Name; parent::afterFind();}

Yii для чайников \Yii for dummies (CPasswordHelper и аутентификация)

имеем таблицу юзер
//
CREATETABLE `user`( `u_id`int(11) NOT NULL AUTO_INCREMENT COMMENT 'ид', `u_username`varchar(45) NOT NULL COMMENT 'логин', `u_password`varchar(255) NOT NULL COMMENT 'пароль', `u_salt`varchar(255) DEFAULT NULL COMMENT 'соль', `role_r_id`int(11) DEFAULT NULL COMMENT 'роль', `u_comment`text COMMENT 'комментарий', `u_created`timestampNOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'дата создания', `u_ban_date`timestampNULL DEFAULT NULL COMMENT 'дата блокировки', `u_dep`int(11) DEFAULT NULL COMMENT 'отдел', `u_sector`int(11) DEFAULT NULL COMMENT 'участок', `ban`tinyint(1) DEFAULT NULL COMMENT 'бан', PRIMARY KEY(`u_id`), UNIQUE KEY `u_id_UNIQUE`(`u_id`), UNIQUE KEY `u_username_UNIQUE`(`u_username`) ) ENGINE = InnoDB AUTO_INCREMENT =18 DEFAULT CHARSET = utf8 COMMENT ='юзеры'; //
создаем модель\круд
//models/User.php
<?p…