Сообщения

Сообщения за март, 2015

Yii (модели в модуле)

Изображение
пара нюансов. 1. создание модуля не забываем добавить модуль в конфиге 2.создание модели в модуле в Model Path *  нужно дописать название модуля и путь до папки с моделями application.modules.admin.models где admin - название модуля 3.создание crud здесь 2 нюанса в Model Class *  указываем нашу модель явно application.modules.admin.models.Page в Controller ID дописываем имя модуля admin/page 4. но и это еще не все. все это хозяйство еще и подключить надо в config/main.php       // autoloading model and component classes     'import' => array(         'application.models.*',         'application.components.*',         'application.modules.admin.models.*',     ), где      'application.modules.admin.models.*', - путь до моделей в модуле. 5. если вы делаете разный интерфейс для разных модулей, то во modules/admin/views/layouts добавьте свои лэйауты, а в контролерах моделей поменяйте   class PageControll

Yii (выпадающее меню + ЧПУ)

Изображение
пруф 1. качаем 2.папку images в корень, папку scripts в protected 3.в layouts\main в <head> подключаем ---  <?php         // remember that you can actually point to the js files directly if         // your script file is outside of protected/subfolders         $jqueryslidemenupath = Yii::app()->assetManager->publish(Yii::app()->basePath . '/scripts/jqueryslidemenu/');         //Register jQuery, JS and CSS files         Yii::app()->clientScript->registerCssFile($jqueryslidemenupath . '/jqueryslidemenu.css');         Yii::app()->clientScript->registerCoreScript('jquery');         Yii::app()->clientScript->registerScriptFile($jqueryslidemenupath . '/jqueryslidemenu.js');         ?>   --- 4. вместо mainmenu пишем, если все хорошо - радуемся --- <div id="myslidemenu" class="jqueryslidemenu"> <?php $this->widget('zii.widgets.CMenu',array(    'items'=>array(

Yii (debugger в 3 шага)

Изображение
пруф 1. качаем дополнение кидаем папку yii-debug-toolbar в extensions 2.в config\main не забудьте про  'preload' => array('log'),      'log' => array(             'class' => 'CLogRouter',             'enabled' => true,             'routes' => array(                 #...                 array(                     'class' => 'CFileLogRoute',                     'levels' => 'error, warning',                 ),                 array(                     'class' => 'application.extensions.yii-debug-toolbar.YiiDebugToolbarRoute',                     'ipFilters' => array('127.0.0.1', '*.*.*.*'),                 ),             ),         ),     ), в ipfilters прописываем свой айпишник 3. в поключении к базе добавляем --    'enableProfiling'=>true,  -- т.е. должно получиться следующее -- return array(        

Yii (RBAC)

Изображение
оффициальный тутор видео по нему в принципе все очень просто. особенно по видео. нюансы: 1.в auth --    'admin' => array(         'type' => CAuthItem::TYPE_ROLE,         'description' => 'admin',                'bizRule' => null,         'data' => null     ),       '1' => array(         'type' => CAuthItem::TYPE_ROLE,         'description' => 'admin',                'bizRule' => null,         'data' => null     ), -- что 1, что admin являются именами. скорее всего вы не храните имя роли полностью и у вас есть ссылка на таблицу со списками ролей. тогда webuser.php  --     function getRole() {         if($user = $this->getModel()){             // в таблице User есть поле role             //return $user->id_role;             return Role::model()->findByPk($user->id_role)->name;         }     } и можно использ

Postgres рекурсивные запросы

Запрос снизу вверх. 8 и 3 - потомки WITH RECURSIVE temp1 ( p_id, p_parent, p_title ) AS ( SELECT T1 . p_id , T1 . p_parent , T1 . p_title FROM "SC_Wonder" .t_page T1 WHERE T1 . p_id = 8 or T1 . p_id = 3 union select T2 . p_id , T2 . p_parent , T2 . p_title FROM "SC_Wonder" .t_page T2 INNER JOIN temp1 ON ( temp1 . p_parent = T2 . p_id )) select * from temp1 order by p_parent desc .. Запрос сверху вниз. элемент с прдком 0 - корневой элемент WITH RECURSIVE temp1 ( p_id,p_parent,p_title, PATH , LEVEL, NAME ) AS ( SELECT T1 . p_id , T1 . p_parent , T1 . p_title , CAST ( T1 . p_id AS VARCHAR ( 50 )) as PATH , 1 , CAST ( T1 . p_title AS VARCHAR ( 255 )) as NAME FROM "SC_Wonder" .t_page T1 WHERE T1 . p_parent = 0 union select T2 . p_id , T2 . p_parent , T2 . p_title , CAST ( temp1 . PATH || '->' || T2 . p_id AS VARCHAR ( 50 )) ,LEVEL + 1 , CAST ((repeat( ' ' , LEVEL + 1 ) || T2 .

Yii (дерево страниц с добавлением и удалением элементов)

Изображение
Забегу вперед, покажу что мы хотим получить Пойдем по шагам. Подразумевается, что yii у вас установлен и настроен. Если нет, то смотрите как это делается в предыдущих уроках. 1. Создаем таблицу. Я решил работать с PostgreSQL поэтому DDL такой CREATE TABLE " SC_Wonder ".t_page ( p_id SERIAL , p_title TEXT NOT NULL , p_link TEXT , p_parent INTEGER , p_order INTEGER , p_type INTEGER , p_comment TEXT ) WITH (oids = false); COMMENT ON TABLE "SC_Wonder" .t_page IS 'таблица страниц' ; COMMENT ON COLUMN "SC_Wonder" . t_page . p_id IS 'ид' ; COMMENT ON COLUMN "SC_Wonder" . t_page . p_title IS 'название' ; COMMENT ON COLUMN "SC_Wonder" . t_page . p_link IS 'ссылка' ; COMMENT ON COLUMN "SC_Wonder" . t_page . p_parent IS 'предок' ; COMMENT ON COLUMN "SC_Wonder" . t_page . p_order IS 'позиция' ; COMMENT ON COLUMN "SC_Wonder&quo

Yii (резиновый сайт)

Изображение
Если вам надоела статика вашего сайта, Можно растянуть его на всю страницу. Лезем в layouts/column2 здесь видим примерно следующее <?php $this->beginContent('//layouts/main'); ?> <div class="container">     <div class="span-24">         <div id="content">             <?php echo $content; ?>         </div><!-- content -->     </div>     <div class="span-5 last">         <div id="sidebar"> вот эти классы и отвечают за размер колонок. Большинство настроек css лежит в css\screen.css Находим /* grid.css */ .container {width:950px;margin:0 auto;}  - это общая ширина страницы. Ставим .container {width:100%;margin:0 auto;} Ниже находим свои стили .span-5 {width:190px;} меняем на .span-5 {width:150px;float:left;} для   <div class="span-5 last"> можно определить свое свойство lastleft   тогда для <div class="span-5 lastl

Yii (вход по AD LDAP )

Изображение
http://des1roer.blogspot.ru/2015/02/yii.html Сделано под впечатлением  http://habrahabr.ru/post/177873/ Хочу поделиться опытом по LDAP Active Directory (про другие LDAP не знаю, не сталкивался). Нулевое -  подключаем расширение LDAP к PHP. В OpenServer это так раскоментить ..\OpenServer\userdata\config в PHP-5.4_php.ini (ну или какой пхп) строчку extension=php_ldap.dll Первое -  качаем adLdap Кидаем в папку components и adLdap и папки (все из src) Для начала я подключил adLdap к Yii, как компонент приложения, т.е.: // //protected/config/main.php ‘components’ => array( ... 'ldap' => array( 'class' => 'LdapComponent', 'baseDn' => 'DC=example,DC=org', //example.org 'accountSuffix' => '@example.org', 'domainControllers' => array('dc.example.org'), 'adminUsername' => 'username', 'ad

Yii (CHtml::checkBoxList храним состояние в базе)

Изображение
Большое спасибо ему Пойдем по шагам. 1. Создаем таблицы в базе вот дамп // -- -- Current Database: `localdb` -- /*!40000 DROP DATABASE IF EXISTS `%s` */ ; CREATE DATABASE /*!32312 IF NOT EXISTS*/ `localdb` /*!40100 DEFAULT CHARACTER SET utf8 */ ; USE `localdb` ; -- MySQL dump 10.13 Distrib 5.6.22, for Win32 (x86) -- -- Host: localhost Database: localdb -- ------------------------------------------------------ -- Server version 5.5.41-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */ ; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */ ; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */ ; /*!40101 SET NAMES utf8 */ ; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */ ; /*!40103 SET TIME_ZONE='+00:00' */ ; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */ ; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */ ; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='