Методи за персонализиране и оформяне приспособления в Yii

Методи за персонализиране и оформяне приспособления в Yii

Включени Yii Framework първоначално получи набор от джаджи Zii. Програмистите са запознати с изобилие от възможности за стайлинг джаджи започват да персонализирате, но не веднага достигат удобните начини за стайлинг. В тази рецепта, ще се опитаме да сведе до минимум размера на копието под формата на един вид код.

Дадените много по-нататъшни стъпки, се прилагат за стандарт (CLinkPager. CGridView. CListView. CDetailView. CActiveForm) и свои собствени джаджи. Ние ще разгледаме един пример само с решетка и padzhinatorom.

Осъществяване CGridView и CLinkPager

Така padzhinator може да бъде оформена да го използват като специално отделно:

и "не означава", тъй като той се използва в състава CGridView. CListView:

Посочихме му повече опции, а именно да се добави "коледни елхи" и връзките с надписи.

Обикновено стайлинг не спира дотук. тъй като обработката на джаджи за персонализирани дизайн е необходимо да се промени поведението си на предписване и правила CSS. Например, за да донесе две padzhinatora по-горе и по-долу списъка с елементи (които не използват CListView), трябва да се напише в презентацията, както следва:

Клас CLinkPager. разбира се, че има и други опции. но ние няма да ги докосне.

Нека сега CGridView. Нека стандартната мрежата, за да се покаже списък публикации в блога изглеждат по следния начин:

Когато даваме необходимите правила в кода на разговори, тя ще изглежда чудовищно:

Тук сме, само, предефинирани някои шаблони и приспособления, посочени им стил файлове.

По принцип, всеки показва решетките на свой собствен начин, но това не е толкова важно.

Проблемът с този директен подход за стайлинг, че ако няколко десетки CRUD контролери появява неудобство синхронизация. Всички тези предизвикателства трябва да копирате джаджа в първоначалния си вид през всички изгледи, и когато промените стила, за да редактирате кода на всеки.

Също така, ние ще имаме проблем в дизайна на второто място, защото там не можем да използваме същите Преглед на файловете за различен дизайн. Разбира се, можем да се предефинира всички понятия в темата на новия сайт, но това не е много икономичен вариант. Така че се опитват да намерят алтернативи.

Замяна на приспособленията, като наследство

CGridView и всички други компоненти на рамката представляват една от основните класове с обществени сфери, така че ние можем лесно да otnasledovatsya от оригинала и да заменят стойностите на тези полета по подразбиране.

LinkPager създаде класа и бързо напред предава, когато се обаждате на стойността на джаджа вътре в него:

Тук имаме, например, да вземе стилове от текущата тема. Ние го насочи в конструктора, като, за разлика от Java или ActionScript, PHP език не позволява полета, за да инициализират изчислява израз, това е, не позволява да се напише нещо като това:

Новият клас ще постави, например, в защитените / компоненти. Сега, вместо CLinkPager да използвате нашия LinkPager:

И всичко това се прави не от слепване десетки възможности във всеки изглед, както и една проста промяна на името на класа.

Сега, за да промените стила на всички джаджи за второто място просто трябва да промените стойността на опциите в класната стая или GridView гледания. Нито оглед файл не трябва да се променя.

Theming чрез Skins

Преосмисляне на стандартните класове - много гъвкав инструмент, но тя се използва само за да промените стила на джаджа е ирационално, тъй като тази рамка предвижда различна възможност.

Описанието може да се намери в статията на Theming се в официалното ръководство. Yii предвижда джаджи не само промяна на вида стандартни представителства, но и предефиниране на възможности.

Първият подход включва уточняват параметри в конфигурационния файл:

Но в този случай трябва да се регистрирате ръчно пътя