Методи за персонализиране и оформяне приспособления в 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 предвижда джаджи не само промяна на вида стандартни представителства, но и предефиниране на възможности.
Първият подход включва уточняват параметри в конфигурационния файл:
Но в този случай трябва да се регистрирате ръчно пътя