Sistem widget Yii menyediakan mekanisme yang kuat untuk mewujudkan komponen UI yang boleh diguna semula. Widget merangkumi logik dan data persembahan, memisahkannya dari kod aplikasi utama. Ini menggalakkan kebolehgunaan semula kod, penyelenggaraan, dan seni bina yang bersih. Untuk membuat widget yang boleh diguna semula, anda biasanya akan melanjutkan kelas yii\base\Widget
. Mari kita gambarkan dengan contoh mudah: widget "jawatan terkini".
<code class="php"><?php namespace app\widgets; use yii\base\Widget; use app\models\Post; // Assuming you have a Post model class RecentPostsWidget extends Widget { public $limit = 5; // Number of recent posts to display public function run() { $posts = Post::find()->orderBy(['created_at' => SORT_DESC])->limit($this->limit)->all(); return $this->render('recent-posts', ['posts' => $posts]); } }</code>
Kod ini mentakrifkan A RecentPostsWidget
yang mengambil jawatan terkini dari pangkalan data. Kaedah run()
adalah teras widget; Ia mengambil data dan menjadikan pandangan. Pandangan recent-posts
(terletak di views/widgets/recent-posts.php
) akan mengandungi HTML sebenar untuk memaparkan siaran. Anda kemudian boleh menggunakan widget ini dalam pandangan anda seperti ini:
<code class="php"><?php echo RecentPostsWidget::widget(); ?></code>
Ini akan menjadikan widget dengan tetapan lalai. Anda juga boleh menyesuaikannya:
<code class="php"><?php echo RecentPostsWidget::widget(['limit' => 10]); ?></code>
Ini akan memaparkan 10 jawatan terbaru. Kunci untuk kebolehgunaan semula adalah merangkumi semua logik dan persembahan dalam widget, menjadikannya mudah disusun ke bahagian -bahagian yang berlainan dari aplikasi anda tanpa perlu menulis semula kod.
Dalam projek yang lebih besar, menganjurkan dan menguruskan widget menjadi penting untuk mengekalkan dan berskala. Berikut adalah beberapa amalan terbaik:
app\widgets\blog
, app\widgets\user
).widgets
khusus dalam direktori komponen aplikasi anda. Subdirektori dapat menganjurkan lagi widget mengikut kategori.Memperluas atau menyesuaikan widget YII yang sedia ada membolehkan anda menyesuaikannya dengan keperluan reka bentuk khusus anda tanpa mengubah suai kod asal. Yii membuat ini mudah melalui warisan.
Katakan anda ingin menyesuaikan yii\widgets\ListView
untuk menggunakan templat yang berbeza:
<code class="php"><?php namespace app\widgets; use yii\widgets\ListView as BaseListView; class CustomListView extends BaseListView { public $itemView = '@app/views/widgets/custom-list-item'; // Path to your custom item view }</code></code>
Ini mewujudkan CustomListView
yang mewarisi dari yii\widgets\ListView
tetapi menggunakan itemView
yang berbeza. Sekarang, anda boleh menggunakan CustomListView
dalam aplikasi anda, memanfaatkan fungsi ListView
tetapi dengan templat tersuai anda. Anda boleh mengatasi sifat dan kaedah lain yang diperlukan untuk menyesuaikan tingkah laku widget lagi.
Mewujudkan widget tersuai adalah aspek asas pembangunan YII. Prosesnya mudah:
yii\base\Widget
dan melaksanakan kaedah run()
. Kaedah ini mengandungi logik teras untuk menjadikan widget.views/widgets
) yang mengandungi HTML untuk menjadikan output widget. Gunakan $this->render()
dalam kaedah run()
untuk memberikan pandangan ini.WidgetName::widget([ 'property' => 'value', ...])
Dalam pandangan anda untuk memberi instantiate dan geser widget tersuai anda.Contohnya, widget "Hello World" yang mudah:
<code class="php"><?php namespace app\widgets; use yii\base\Widget; class HelloWorldWidget extends Widget { public $message = 'Hello, World!'; public function run() { return $this->render('hello-world', ['message' => $this->message]); } }</code>
Pandangan yang sepadan ( views/widgets/hello-world.php
):
<code class="php"><h1><?php echo $message; ?></h1></code>
Ini menunjukkan betapa mudahnya anda boleh membuat dan mengintegrasikan widget tersuai ke dalam aplikasi Yii anda, meningkatkan kebolehgunaan semula dan memudahkan pembangunan. Ingatlah untuk mengikuti amalan terbaik yang digariskan sebelum ini untuk menguruskan widget tersuai anda dengan berkesan dalam projek yang lebih besar.
Atas ialah kandungan terperinci Bagaimana saya menggunakan widget yii untuk membuat komponen UI yang boleh diguna semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!