Creating a custom widget is not complicated in Yii, the following are the specific steps. 1. First set up the widget class structure, create a new class in the widgets directory and inherit yii\base\Widget; 2. Then render the view in the run() method to generate more complex HTML content; 3. Then use widgets in the view file and call them through the widget() method; 4. Finally, optionally add configuration options and logic, such as limiting the number of displays, supporting caches, etc., to enhance functionality and flexibility.
Creating a custom widget in Yii isn't as complicated as it might sound, especially if you're already familiar with the basics of Yii development. A widget is essentially a reusable component that can be embedded into views to encapsulate functionality — things like navigation menus, data displays, or even small forms.
Here's how to build your own basic custom widget in Yii 2.
1. Set Up the Widget Class Structure
The first step is to create a new class file for your widget. Widgets are usually placed under the widgets
directory inside your application (or module), and they extend yii\base\Widget
.
So, for example, if you want to create a widget called RecentPosts
, you'd create:
/widgets/RecentPosts.php
Inside this file, define the class structure:
namespace app\widgets; use yii\base\Widget; use yii\helpers\Html; class RecentPosts extends Widget { public $title = 'Recent Posts'; public function init() { parent::init(); // You can do any setup here if needed } public function run() { return Html::tag('div', $this->title, ['class' => 'recent-posts']); } }
This basic version just outputs a div with a title. We'll expand on this next.
2. Render a View Inside the Widget
Most widgets will need to render more than a simple string — probably a list or some structured HTML. To do that, use the render()
method inside the run()
function.
Let's say you have a _recent-posts.php
view file located at @app/views/widgets/recent-posts.php
. Update the run()
method like so:
public function run() { return $this->render('recent-posts', [ 'title' => $this->title, 'posts' => $this->getRecentPosts(), // assuming this method exists ]); }
Make sure you have the view file ready. Here's what it could look like:
<!-- @app/views/widgets/recent-posts.php --> <div class="recent-posts"> <h3><?= Html::encode($title) ?></h3> <ul> <?php foreach ($posts as $post): ?> <li><?= Html::a($post->title, ['post/view', 'id' => $post->id]) ?></li> <?php endforeach; ?> </ul> </div>
This makes your widget more flexible and easier to customize later.
3. Use the Widget in a View
Once your widget is created, using it in a view is straightforward. Just call it like any other widget:
<?= \app\widgets\RecentPosts::widget([ 'title' => 'Latest Articles', ]) ?>
Or if you're using the namespace at the top of your view file, you can simplify it:
<?php use app\widgets\RecentPosts; ?> <?= RecentPosts::widget(['title' => 'Latest Articles']) ?>
You can also pass additional parameters depending on how your widget is built — like limit, category filter, etc.
4. Optional: Add Configuration and Logic
Widgets often accept configuration options. For example, you might want to let users decide how many posts to show:
public $limit = 5; public function getRecentPosts() { return Post::find()->limit($this->limit)->all(); }
Then in the view, loop through $posts
as usual.
Some common enhancements:
- Adding CSS classes or IDs via config
- Supporting caching
- Using assets (like JS/CSS files specific to the widget)
These are optional but helpful when building production-ready widgets.
That's basically all you need to know to start writing your own widgets in Yii. It's not overly complex, but there are a few moving parts — especially around where to place files and how to structure the class. Once you've got one working, though, reusing and expanding them become second nature.
The above is the detailed content of How do I create a custom Yii widget?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

An avatar on Netflix is ??a visual representation of your streaming identity. Users can go beyond the default avatar to express their personality. Continue reading this article to learn how to set a custom profile picture in the Netflix app. How to quickly set a custom avatar in Netflix In Netflix, there is no built-in feature to set a profile picture. However, you can do this by installing the Netflix extension on your browser. First, install a custom profile picture for the Netflix extension on your browser. You can buy it in the Chrome store. After installing the extension, open Netflix on your browser and log into your account. Navigate to your profile in the upper right corner and click

A Venn diagram is a diagram used to represent relationships between sets. To create a Venn diagram we will use matplotlib. Matplotlib is a commonly used data visualization library in Python for creating interactive charts and graphs. It is also used to create interactive images and charts. Matplotlib provides many functions to customize charts and graphs. In this tutorial, we will illustrate three examples to customize Venn diagrams. The Chinese translation of Example is: Example This is a simple example of creating the intersection of two Venn diagrams; first, we imported the necessary libraries and imported venns. Then we create the dataset as a Python set, after that we use the "venn2()" function to create

How to customize background image in Win11? In the newly released win11 system, there are many custom functions, but many friends do not know how to use these functions. Some friends think that the background image is relatively monotonous and want to customize the background image, but don’t know how to customize the background image. If you don’t know how to define the background image, the editor has compiled the steps to customize the background image in Win11 below. If you are interested If so, take a look below! Steps for customizing background images in Win11: 1. Click the win button on the desktop and click Settings in the pop-up menu, as shown in the figure. 2. Enter the settings menu and click Personalization, as shown in the figure. 3. Enter Personalization and click on Background, as shown in the picture. 4. Enter background settings and click to browse pictures

The iOS 17 update for iPhone brings some big changes to Apple Music. This includes collaborating with other users on playlists, initiating music playback from different devices when using CarPlay, and more. One of these new features is the ability to use crossfades in Apple Music. This will allow you to transition seamlessly between tracks, which is a great feature when listening to multiple tracks. Crossfading helps improve the overall listening experience, ensuring you don't get startled or dropped out of the experience when the track changes. So if you want to make the most of this new feature, here's how to use it on your iPhone. How to Enable and Customize Crossfade for Apple Music You Need the Latest

CakePHP is a powerful PHP framework that provides developers with many useful tools and features. One of them is pagination, which helps us divide large amounts of data into several pages, making browsing and manipulation easier. By default, CakePHP provides some basic pagination methods, but sometimes you may need to create some custom pagination methods. This article will show you how to create custom pagination in CakePHP. Step 1: Create a custom pagination class First, we need to create a custom pagination class. this

How to customize shortcut key settings in Eclipse? As a developer, mastering shortcut keys is one of the keys to improving efficiency when coding in Eclipse. As a powerful integrated development environment, Eclipse not only provides many default shortcut keys, but also allows users to customize them according to their own preferences. This article will introduce how to customize shortcut key settings in Eclipse and give specific code examples. Open Eclipse First, open Eclipse and enter

How to implement custom middleware in CodeIgniter Introduction: In modern web development, middleware plays a vital role in applications. They can be used to perform some shared processing logic before or after the request reaches the controller. CodeIgniter, as a popular PHP framework, also supports the use of middleware. This article will introduce how to implement custom middleware in CodeIgniter and provide a simple code example. Middleware overview: Middleware is a kind of request

1. The picture below is the default screen layout of edius. The default EDIUS window layout is a horizontal layout. Therefore, in a single-monitor environment, many windows overlap and the preview window is in single-window mode. 2. You can enable [Dual Window Mode] through the [View] menu bar to make the preview window display the playback window and recording window at the same time. 3. You can restore the default screen layout through [View menu bar>Window Layout>General]. In addition, you can also customize the layout that suits you and save it as a commonly used screen layout: drag the window to a layout that suits you, then click [View > Window Layout > Save Current Layout > New], and in the pop-up [Save Current Layout] Layout] enter the layout name in the small window and click OK
