02 β O'rnatish va birinchi komponent¶
β¬ οΈ Oldingi: 01 β Livewire nima Β· π Kitob boshi Β· Keyingi: 03 β Birinchi komponent β‘οΈ
Bu bobda: kompyuteringizni Livewire'ga tayyorlaymiz β kerakli dasturlar (PHP, Composer, Node, Laravel)ni tekshiramiz, yangi Laravel loyiha ochib, unga Livewire 4'ni o'rnatamiz. So'ngra birinchi
counterkomponentini yaratamiz, uni manzilga (route) ulaymiz va brauzerda ochib ko'ramiz. Bobning oxirida sizning kompyuteringizda ishlaydigan, tirik Livewire sahifasi paydo bo'ladi.
Kirish: ustaxonani tayyorlash¶
Tasavvur qiling, siz non yopmoqchisiz. Avval oshxonada un, suv, xamirturush borligini tekshirasiz, keyin xamir qorasiz, undan keyin tandirni qizdirasiz β va faqat shundan so'ng birinchi nonni yopasiz. Dasturlashda ham xuddi shunday: avval muhitni (ustaxonani) tayyorlaymiz, keyin loyihani qoramiz, va eng oxirida birinchi komponentni "yopamiz".
Bu bob aynan shu tartibda boradi. Hech narsani o'tkazib yubormang β har bir qadam keyingisining poydevori. Oxirida brauzeringizda "+" tugmasini bosib turadigan, lekin sahifa qayta yuklanmaydigan, tirik bir narsa ko'rasiz. Aynan shu β Livewire "sehri"ning birinchi uchqunidir.
Eslatma
Bu bobda komponentni faqat ishga tushiramiz β uning ichidagi wire:click, wire:model va reaktivlik qanday ishlashini 03-bobda chuqur o'rganamiz. Hozircha maqsad: "ishlayapti!" degan birinchi quvonchni his qilish.
1. Talablar: nima kerak?¶
Livewire β Laravel'ning ustiga o'rnatiladigan paket (qo'shimcha). Demak, avval Laravel ishlaydigan muhit kerak. Quyidagilar bo'lishi shart:
| Dastur | Kerakli versiya | Nima uchun |
|---|---|---|
| PHP | 8.4 yoki yuqori | Livewire kodi PHP'da ishlaydi (server tili). |
| Composer | 2.x | PHP paketlarini (jumladan Livewire'ni) o'rnatadi. |
| Node.js | 18 yoki yuqori (biz 24'da tekshirdik) | CSS/JS fayllarini "build" qilish uchun (Vite). |
| Laravel | 12 | Livewire 4 shu versiya bilan to'liq mos. |
Hayotiy o'xshatish. PHP β bu pishirish tili, Composer β ingredientlar do'koni (kerakli paketni keltirib beradi), Node esa β bezatish bo'limi (interfeysning ko'rinishini "yig'adi"). Laravel β butun oshxonaning o'zi.
Versiyalarni tekshirish¶
Terminal (Windows'da PowerShell yoki Terminal, macOS/Linux'da Terminal) oching va quyidagilarni bittama-bitta tering:
Natijada PHP 8.4.x ko'rinishidagi qator chiqishi kerak. Agar 8.4 dan past bo'lsa, PHP'ni yangilang.
Composer version 2.x chiqsa, hammasi joyida.
v18.x yoki yuqori bo'lsa yetarli.
Ehtiyot bo'ling
Agar bu komandalarning birortasi "command not found" (yoki "tanilmadi") desa, demak o'sha dastur o'rnatilmagan yoki tizim yo'liga (PATH) qo'shilmagan. Davom etishdan oldin uni o'rnating. Eng oson yo'l β Laravel Herd (Windows va macOS uchun bepul): u PHP, Composer va Node'ni birdaniga keltiradi.
Maslahat
Bu kitob davomida biz aniq versiyalardan foydalanamiz: Laravel 12, Livewire v4.3, PHP 8.4, Node 24. Bularning hammasi tirik loyihada ishlatib tekshirilgan. Agar versiyalaringiz biroz farq qilsa ham xavotir olmang β asosiy g'oyalar bir xil.
2. Laravel loyihasini tayyorlash¶
Livewire'ni o'rnatish uchun avval bo'sh Laravel loyihasi kerak. Bu kitob siz Laravel asoslarini bilasiz deb taxmin qiladi β agar yangi bo'lsangiz yoki esingizga tushirmoqchi bo'lsangiz, avval Laravel kitobini ko'rib chiqing.
Yangi loyiha yaratishning ikki yo'li bor. Birinchisi β Composer orqali:
Ikkinchisi β Laravel'ning o'z o'rnatuvchisi orqali (agar laravel komandasi o'rnatilgan bo'lsa):
Ikkalasi ham myapp nomli papka ichida to'liq Laravel loyihasini yaratadi. Yaratilgach, shu papkaga kiring:
Hayotiy o'xshatish.
create-projectβ yangi kvartiraga ko'chish kabi: devorlar, eshiklar, asosiy jihozlar (Laravel'ning standart tuzilmasi) tayyor holda topshiriladi. Bizning vazifamiz β uni "jonli" qilish.
Eslatma
Bu kitobda biz Laravel loyiha qurishni uzundan-uzoq tushuntirmaymiz β bu Livewire kitobi. Loyiha tayyor bo'lgach, e'tiborimizni to'liq Livewire'ga qaratamiz.
3. Livewire 4'ni o'rnatish¶
Endi eng asosiy qadam. Loyiha papkasi ichida turib, bitta komandani tering:
Bu komanda Livewire'ning eng so'nggi barqaror versiyasini (hozir v4.3) yuklab oladi va loyihangizga ulaydi. Composer kerakli barcha qo'shimcha paketlarni ham o'zi keltiradi β siz hech narsa qilishingiz shart emas.
Hayotiy o'xshatish.
composer requireβ do'kondan tayyor mahsulot buyurtma qilish kabi. Siz faqat nomini aytasiz (livewire/livewire), Composer esa uni topib, qutidan chiqarib, kerakli joyga qo'yib beradi.
O'rnatish tugagach, haqiqatan o'rnatilganini va versiyasini tekshirib ko'rishingiz mumkin:
Natijada paket haqida ma'lumot, jumladan versions : * v4.3.x qatori chiqadi. Mana, Livewire endi loyihangizda yashaydi!
Livewire 3 da qanday edi?
Livewire 3'da ham o'rnatish komandasi xuddi shu β composer require livewire/livewire edi. Faqat o'sha paytda v3 o'rnatilardi. Bugun esa shu komanda avtomatik v4 keltiradi. O'rnatishdan keyin esa eng katta farqlar boshlanadi: v4'da komponent fayllari, layout va routing biroz boshqacha β buni quyida ko'rasiz.
4. Layout (umumiy qolip) yaratish¶
Livewire'ning to'liq sahifali (full-page) komponentlari bir "qolip" ichida ko'rinadi. Bu qolip β har bir sahifaning umumiy ramkasi: <html>, <head>, <body> teglari, sayt sarlavhasi, umumiy CSS va shu kabilar. Komponentingiz esa shu ramkaning o'rtasiga "joylashadi".
Hayotiy o'xshatish. Layout β bu fotosurat ramkasi. Ramka har doim bir xil (chiroyli chegara, devorga ilinadigan ilgak), lekin ichidagi rasm har xil bo'ladi. Sizning komponentingiz β ramka ichidagi rasm.
Quyidagi komanda standart layout faylini yaratadi:
Bu komanda resources/views/layouts/app.blade.php faylini hosil qiladi. Uning soddalashtirilgan ko'rinishi shunday:
{{-- resources/views/layouts/app.blade.php --}}
<!DOCTYPE html>
<html lang="uz">
<head>
<meta charset="utf-8">
<title>{{ $title ?? 'Livewire' }}</title>
@livewireStyles
</head>
<body>
{{ $slot }}
@livewireScripts
</body>
</html>
Bu yerdagi to'rt asosiy "sehrli" qismni tushunib olaylik:
@livewireStylesβ<head>ichiga qo'yiladi. U Livewire'ga kerakli CSS uslublarini sahifaga ulaydi (masalan, yuklanish indikatorlari uchun).{{ $slot }}β bu eng muhim joy. Sizning komponentingiz aynan shu yerga "quyiladi".$slotβ bo'sh o'rin, komponent mazmuni bilan to'ldiriladigan teshik. (Ramka ichidagi rasm o'rni esingizdami?)@livewireScriptsβ<body>oxiriga qo'yiladi. U Livewire'ning brauzer tomonidagi JavaScript "miya"sini ulaydi β aynan shu JS tugma bosilganda serverga so'rov yuboradi va sahifani yangilaydi.@vite([...])β ba'zi standart layout'larda bu qatorni ham ko'rasiz. U sizning shaxsiy CSS/JS fayllaringizni "build" qilib ulaydi.
Ehtiyot bo'ling: @vite xatosi
Agar layout'da @vite([...]) qatori bo'lsa va siz assetlarni hali build qilmagan bo'lsangiz, sahifa "Vite manifest not found" degan xato berishi mumkin. Buning ikki yechimi bor:
- Tezkor demo uchun:
@vite([...])qatorini vaqtincha olib tashlang (yoki izohga oling). Livewire@livewireStyles/@livewireScriptsbilan o'zicha to'liq ishlayveradi. - To'g'ri yo'l: assetlarni build qiling: Bu kitobdagi misollarni tezda sinash uchun 1-yo'l yetarli. Real loyihada esa, albatta, 2-yo'lni tanlang.
5. Birinchi komponent: counter¶
Hammasi tayyor. Endi tarixiy lahza β birinchi Livewire komponentini yaratamiz. An'anaga ko'ra, birinchi komponent har doim hisoblagich (counter) bo'ladi.
Bu komanda aynan bitta fayl yaratadi:
Ha, ko'zingiz aldamayapti β fayl nomi oldida chinakam β‘ (chaqmoq) emojisi bor!
β‘ chaqmoq nimaligi?¶
Hayotiy o'xshatish. β‘ β bu fayl peshonasidagi maxsus belgi, xuddi do'kon eshigidagi "Bu yer β kafe" degan yorliq kabi. Loyihangizda yuzlab Blade fayllar bo'lishi mumkin; chaqmoqli fayllar darhol ko'rinadi: "Mana bular β Livewire komponentlari!".
Livewire 4 har bir komponent faylini β‘ emojisi bilan belgilaydi. Bu β toza tartib: oddiy Blade fayllar va Livewire komponentlarini bir qarashda ajratib olasiz. Bu belgi faqat vizual yorliq β uning hech qanday texnik vazifasi yo'q, fayl baribir oddiy .blade.php.
Maslahat: emojini o'chirish
Agar fayl nomida emoji yoqmasa (masalan, ba'zi muharrirlar yoki tizimlarda noqulay bo'lsa), uni o'chirib qo'yishingiz mumkin. config/livewire.php faylida quyidagini sozlang:
counter.blade.php nomi bilan yaratiladi. (Config faylini qanday chiqarish β quyida 8-bo'limda.)
Bo'sh komponent qanday ko'rinadi?¶
Yaratilgan faylni ochsangiz, ichida shunday "bo'sh qolip" turadi:
{{-- resources/views/components/β‘counter.blade.php --}}
<?php
use Livewire\Component;
new class extends Component
{
//
};
?>
<div>
{{-- ... --}}
</div>
Bu β Single-File Component (SFC), ya'ni "bitta fayldagi komponent" β Livewire 4'ning yangi va asosiy formati. Bitta faylda ikki narsa birga turadi:
- Yuqori qism β
<?php ... ?>orasidagi PHP "miya": komponentning ma'lumotlari va amallari. E'tibor bering: bu yerda anonim klass ishlatiladi βnew class extends Component { ... };. Oxiridagi nuqta-vergul (;) shart β uni unutmang! - Pastki qism β Blade markup, ya'ni komponentning ko'rinishi (HTML). U albatta bitta ildiz element (bu yerda
<div>) ichida bo'lishi kerak.
Hayotiy o'xshatish. SFC β bu bir konvertdagi xat va uning javobi kabi. Bir joyda ham mantiq (PHP), ham ko'rinish (HTML) yashaydi. Avval ularni ikki alohida faylda saqlash kerak edi; endi bittada β qulay va ixcham.
Livewire 3 da qanday edi?
Livewire 3'da har bir komponent ikkita alohida fayl edi: app/Livewire/Counter.php (PHP klass) va resources/views/livewire/counter.blade.php (ko'rinish). Livewire 4'da esa ikkalasi bitta faylga (SFC) birlashtirildi. Eski uslub hali ham mavjud β keyinroq ko'rasiz (--class formati), lekin yangi standart β SFC.
Hozircha bo'sh komponentga tegmaymiz β ichini to'ldirishni 03-bobga qoldiramiz. Lekin uni brauzerda ko'rsatish uchun unga manzil (route) berishimiz kerak.
6. Route (manzil) ulash¶
Komponentni brauzerda ochish uchun unga URL-manzil berishimiz kerak. Bu routes/web.php faylida qilinadi:
{{-- routes/web.php --}}
<?php
use Illuminate\Support\Facades\Route;
Route::livewire('/counter', 'counter');
Bu qator shuni bildiradi: "Kimdir /counter manziliga kirsa, counter komponentini ko'rsat".
Ehtiyot bo'ling: Route::livewire() SHART
Livewire 4'da to'liq sahifali komponentni manzilga ulash uchun albatta Route::livewire() ishlating. Bu β v4'ning muhim talabi. Oddiy Route::get('/counter', ...) bilan komponentni to'g'ridan-to'g'ri qaytarib bo'lmaydi β komponent layout ichida to'g'ri render bo'lishi uchun Route::livewire() zarur.
Livewire 3 da qanday edi?
Livewire 3'da komponentni manzilga ulash uchun Route::get('/counter', Counter::class); yozilardi (komponent klassini to'g'ridan-to'g'ri uzatib). Livewire 4'da esa maxsus Route::livewire('/counter', 'counter') metodi kiritildi β birinchi argument URL, ikkinchisi komponent nomi (satr ko'rinishida).
Manzilga nom ham berish mumkin (keyinroq route('...') orqali murojaat qilish uchun):
7. Brauzerda ochish¶
Endi loyihani ishga tushiramiz. Terminalda:
Bu Laravel'ning ichki veb-serverini ishga tushiradi va sizga manzil beradi, odatda:
Brauzerni oching va manzilga /counter qo'shing:
Nimani ko'rasiz? Hozircha komponent bo'sh (<div> ichi quruq), shuning uchun sahifa ham bo'm-bo'sh ko'rinadi β bu mutlaqo normal! Muhimi: sahifa xatosiz ochildi (HTTP 200). Bu degani β Livewire o'rnatildi, layout ishladi, route to'g'ri ishladi va komponent layout ichiga muvaffaqiyatli "quyildi". Ustaxona ishlayapti!
Tekshirib ko'ring
Sahifa ochilgach, brauzerda "View Source" (sahifa manbasini ko'rish) qiling. HTML ichida wire:id="..." kabi atributlarni va Livewire skript ulanishini ko'rasizmi? Agar ko'rsangiz β Livewire haqiqatan ishlayapti. Keyingi bobda shu bo'sh <div>ni jonli hisoblagichga aylantiramiz.
Maslahat
php artisan serve ishlab turganda terminalni yopmang β server o'sha derazada yashaydi. Kodingizni o'zgartirsangiz, brauzerni yangilash (F5) kifoya β qayta ishga tushirish shart emas. Serverni to'xtatish uchun terminalda Ctrl + C bosing.
8. config/livewire.php bilan tanishuv¶
Livewire ko'p sozlamalarni o'zicha, yashirin holda boshqaradi β siz hech narsa qilishingiz shart emas. Lekin xohlasangiz, bu sozlamalarni o'zingiz boshqarishingiz mumkin. Buning uchun avval config faylini chiqarish (publish) kerak:
Bu config/livewire.php faylini yaratadi. Endi siz uni ochib, Livewire'ning xulq-atvorini sozlashingiz mumkin. Eng ko'p ishlatiladigan sozlamalar:
- Layout β full-page komponentlar uchun standart qolip qaysi fayl ekani (standart:
layouts.app). Agar layout'ingiz boshqa nomda bo'lsa, shu yerda ko'rsatasiz. make_command.emojiβmake:livewireyangi komponentlar nomida β‘ emojisini ishlatsinmi yoki yo'q (yuqorida ko'rdik).- Komponentlar joyi β komponentlar va ularning ko'rinishlari qaysi papkada saqlanishi.
Eslatma
Boshlang'ich daraja uchun config faylini o'zgartirish shart emas β Livewire standart sozlamalar bilan ajoyib ishlaydi. Bu faylni faqat aniq ehtiyoj tug'ilganda (masalan, emojini o'chirish yoki layout nomini almashtirish) ochasiz.
9. make:livewirening boshqa formatlari¶
php artisan make:livewire counter standart holatda SFC (bitta fayl) yaratadi. Lekin komponentni boshqacha tuzilmada ham yaratish mumkin. Hozircha faqat bilib qo'ying β ularni batafsil 04-bobda (Komponent anatomiyasi) o'rganamiz:
--mfc β Multi-File Component (ko'p-fayl): PHP, Blade (va xohlasangiz JS/CSS) alohida fayllarga bo'linadi, lekin bitta papkada turadi. Yirik komponentlar uchun qulay.
--class β eski v3 uslubi: PHP klassi app/Livewire/ da, ko'rinish esa resources/views/livewire/ da alohida turadi.
Eslatma
Komponent nomida nuqta ishlatib, uni papkalarga ham bo'lish mumkin. Masalan php artisan make:livewire post.create resources/views/components/post/β‘create.blade.php faylini yaratadi β ya'ni post papkasi ichida create komponenti. Bu komponentlarni tartibli saqlash uchun foydali.
Bu uch formatning farqi va qachon qaysi birini ishlatish kerakligi β alohida katta mavzu. Hozircha standart SFC bilan davom etamiz, chunki u β Livewire 4'ning eng oson va eng tavsiya etiladigan yo'li.
Hammasi bir oqimda¶
Quyidagi diagramma biz bajargan barcha qadamlarni bir ko'rinishda jamlaydi β o'rnatishdan brauzergacha:
Yaratilgan fayllar loyihada qayerda joylashganini ham ko'rib chiqaylik:
Va nihoyat β brauzer /counter manziliga kirganda, so'rov qaysi yo'l bilan harakat qilib, sahifa qanday yig'iladi:
Xulosa¶
- Livewire ishlashi uchun avval to'g'ri muhit kerak: PHP 8.4+, Composer, Node 18+, Laravel 12. Ularni
php -v,composer --version,node -vbilan tekshiriladi. - Livewire β Laravel'ning ustiga o'rnatiladigan paket: bitta
composer require livewire/livewirekomandasi v4.3ni keltiradi. Tekshirish:composer show livewire/livewire. php artisan livewire:layoutumumiy layout (resources/views/layouts/app.blade.php) yaratadi. Uning yuragi:@livewireStyles,{{ $slot }},@livewireScripts.@vitebuild qilinmagan bo'lsa demo uchun olib turish mumkin.php artisan make:livewire counterstandart holatda SFC β bittaresources/views/components/β‘counter.blade.phpfaylini yaratadi. β‘ emojisi β Livewire komponentlarining vizual yorlig'i (config bilan o'chsa bo'ladi).- SFC ichida
<?php ... ?>(anonim klass, oxirida;) + bitta ildiz<div>dagi Blade markup birga yashaydi. - Livewire 4'da to'liq sahifa komponentini manzilga ulash uchun
Route::livewire('/counter', 'counter')SHART. php artisan serveserverni ishga tushiradi;/counterxatosiz ochilsa β o'rnatish muvaffaqiyatli.php artisan livewire:configconfig faylini chiqaradi;--mfcva--classformatlari 04-bobda ochib beriladi.
Amaliy mashqlar¶
-
(Oson) O'z kompyuteringizda yangi Laravel 12 loyiha yarating va unga Livewire 4'ni o'rnating.
composer show livewire/livewirebilan o'rnatilgan versiyani tasdiqlang βv4.3.xchiqishi kerak. -
(Oson)
php artisan livewire:layoutbilan layout yarating varesources/views/layouts/app.blade.phpfaylini oching. Undagi@livewireStyles,{{ $slot }},@livewireScriptsqatorlarini toping va har birining vazifasini o'z so'zlaringiz bilan izohlab ko'ring. -
(O'rta)
salomnomli yangi komponent yarating (php artisan make:livewire salom). Yaratilganβ‘salom.blade.phpfaylining<div>ichiga shunchaki<h1>Salom, dunyo!</h1>deb yozing. Unga/salommanzilini bering va brauzerda ochib, matnni ko'ring. -
(O'rta)
config/livewire.phpfaylini chiqaring (php artisan livewire:config) vamake_command.emojisozlamasinifalseqiling. Keyin yangi komponent yarating β endi fayl nomida β‘ bo'lmasligini tekshiring. So'ng sozlamani qaytaribtrueqilib qo'ying. -
(Qiyin)
php artisan make:livewire profil --mfckomandasini bajaring va yaratilgan papkani oching. Standart SFC (bitta fayl) bilan bu--mfc(ko'p fayl) qanday farq qilishini kuzating: nechta fayl yaratildi va ular nima vazifa bajaradi deb o'ylaysiz? (Javobini 04-bobdan topasiz.)
β¬ οΈ Oldingi: 01 β Livewire nima Β· π Kitob boshi Β· Keyingi: 03 β Birinchi komponent β‘οΈ