прилагането рамка - - Widgets подробно ръководство за Yii 2

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

Yii включи голям брой приспособления, като например: активна форма. меню. JQuery UI джаджи. Twitter фърмуера джаджи. Следваща ще бъде представена основна информация за джаджи. За информация относно използването на специално приспособление, вижте документацията на съответния клас.

Използването Widgets

Основно, джунджурии, използвани в гледните точки. За да използвате джаджа в цел, просто се обадете на метод Yii \ база \ Widget :: джаджа (). Методът взима множество опции, за да се инициализира джаджа, и връща резултат от постановяването му. Например, следния код, добавя една джаджа, за да изберете дата, която е конфигурирана да използва български език като език на интерфейса на джаджа и съхраняване на входните данни в атрибут FROM_DATE модел $ модел.

Някои приспособления могат да бъдат вътрешно съдържание, което трябва да бъде поставен между повикванията на методи Yii \ база \ Widget :: започне () и Yii \ база \ Widget :: край (). Например, за да генерира формата вход следния код фрагмент използва приспособление Yii \ приспособленията за \ ActiveForm. Тази джаджа ще генерира отваряне и затваряне на тагове

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

Имайте предвид, че за разлика от метода Yii \ база \ Widget :: джаджа (). която връща резултат от предоставянето, метод Yii \ база \ Widget :: започне () връща копие от джаджа, която може да се използва по-нататък за формирането на неговите вътрешни съдържание.

Създаване Глобални настройки по подразбиране

Глобалната подразбиране за определен тип приспособление може да се конфигурира чрез DI контейнер:

Създаване на Widget

За да се създаде приспособление, трябва да наследи клас Yii \ база \ Widget и замени методи Yii \ база \ Widget :: първоначален () и / или Yii \ база \ Widget :: план (). Обикновено, () метод първоначален трябва да съдържа код, който извършва нормализиране приспособлението свойства и метод план на () - код, който се връща резултат приспособление изобразяване. оказване резултат може да се възпроизвежда директно от структурата "ехо" или върнати на линията от серия ().

В следващия пример, за приспособлението HelloWidget HTML кодира и показва съдържанието възложени имот съобщение. Ако е посочено имотът не е зададен, джаджа, като низ по подразбиране на дисплея "Hello World".

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

По-долу е вариант HelloWidget джаджа. който получава съдържанието, рамкирани разговори започват () и край (). то и изходи HTML-кодира.

Както можете да видите, в първоначален метода () е включен PHP буфериране на изхода, така че всички изход между повиквания първоначален () и бягай () могат да бъдат засечени, обработени и върнати на план ().

Информация: Когато се обадите метод Yii \ база \ Widget :: започне () нов екземпляр на джаджа е създадена, а методът на повикване първоначален () ще се появи веднага след като останалата част от кода в конструктор на приспособлението. Когато методът се нарича Yii \ база \ Widget :: край (). метод серия () се нарича. и () метода на края ще покаже върнатата стойност за тях.

Следният код фрагмент показва пример на използване на модифициран вариант HelloWidget:

В някои случаи, приспособлението може да се наложи да донесе голям блок съдържание. И въпреки, че съдържанието може да се интегрира директно в която методът за (). че е по-целесъобразно да го постави в подчинение и се обадете на метод Yii \ база \ Widget :: правят (), за да го направи. Например,

По подразбиране джаджа файловете трябва да са в WidgetPath / изглед към директорията. където WidgetPath - директория, съдържаща джаджа клас по делото. Така, в примера по-горе, приспособлението ще се използва от файла изглед @ приложение / компоненти / изглед / hello.php. в същото време файла с класа джаджа се намира в най-@ ап / компоненти. За да промените директорията, която съдържа изображения на файлове за една джаджа трябва да замени Yii \ база \ Widget :: getViewPath ().

Най-добри практики

Приспособленията са обектно-ориентиран подход за повторно използване на кода на UI.

Когато създадете джаджа, трябва да се придържат към основните принципи на концепцията за MVC. Като цяло, основната логика трябва да се поставя в класа на приспособлението, споделяне с кода, отговорен за оформлението на представянето.

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