search
HomeBackend DevelopmentPHP TutorialYii2 GridView implements the method of directly modifying data on the list page, yii2gridview_PHP tutorial

Yii2 GridView implements the method of directly modifying data on the list page. What does yii2gridview

mean? Let me briefly describe it. The requirements raised by the editor are as follows. Look, can I just click on the data on your list page to modify it directly? I will click in and modify it more. Trouble, it's so inconvenient. This damn thing, this need, do you really want to give her a blow?

ok, today we will take a look at how to use gridview to implement the function of direct modification on the list in Yii2. It is very comprehensive. We try our best to give examples for various types of attributes.

The first step is to deploy yii2-grid

Use composer to install yii2-grid

composer require kartik-v/yii2-grid "@dev"

If you need to output the token during the installation process, you need to log in to your github account at this time, obtain the token value through setting>personal access tokens, enter your token value, and press Enter.

After installation, we configure the module as follows, this is necessary

'modules' => [
'gridview' => [
'class' => '\kartik\grid\Module'
]
];

As we said before, you must first deploy yii2-grid. After downloading and configuring, we open the view file and modify your file by referring to the following code

// use yii\grid\GridView;
//这里屏蔽掉yii的gridview,user我们刚刚安装的gridview
use kartik\grid\GridView;
<&#63;= GridView::widget([
//......
'export' => false,
'columns' => [
//......
],
&#63;>

In the above code, we only need to add 'export' => false, and your original gridview does not need to be changed.

Then we install yii2-editable

composer require kartik-v/yii2-editable "@dev"

After installation, we introduce editable

into the file where we just configured the gridview
use kartik\editable\Editable;

First introduce the modification of textInput type, as shown below


You can easily see the editing effect from the picture above, just paste the code directly

[
'attribute' => 'title',
'class'=>'kartik\grid\EditableColumn',
],

But as we can see from the picture above, pop-up modification is not very convenient. Let’s take a look at a more convenient operation method

[
'attribute' => 'title',
'class'=>'kartik\grid\EditableColumn',
'editableOptions'=>[
'asPopover' => false,
],
],

You only need to click on the attribute value you want to modify to modify it directly. Let’s see what problems this will cause

Perhaps you have discovered that the width of the edit box is too small and the operation is not very convenient. Would it be better if we change the input to textarea? Give it a try. Of course, you can also specify headerOptions to set the width of the current cell. For common gridview operations, please click for reference

Looking at the picture, the effect is indeed much better, just paste the code

[
'attribute' => 'title',
'class'=>'kartik\grid\EditableColumn',
'editableOptions'=>[
'asPopover' => false,
'inputType'=>\kartik\editable\Editable::INPUT_TEXTAREA,
'options' => [
'rows' => 4, 
],
],
],

Some students were very curious and clicked the two buttons in the picture. One is the reset button and the other is the apply button. Reset is okay and easy to understand, but why does it seem to keep clicking after clicking the apply button? What does "processing" mean? Don't worry, don't worry, from the beginning to now and even next, we will first explain the configuration in the view. In fact, after you click the apply button here, you will request the backend asynchronously. We will explain it in detail later.

What if your column is of numeric type? It’s easy, just modify it directly in the input, but if you want the effect in the screenshot below, you need to continue to use composer to install the touch spin widget

require kartik-v/yii2-widget-touchspin "@dev"

After the installation is complete, let’s take a look at how to modify the numeric attributes

The third type, regarding the drop-down box modification, we assume that the field is_delete value 1 displays 2 deleted and the value of the data inventory is a numeric type of 1 2. Look at the renderings and then we will paste the code

There are two attributes on the left and right sides. For comparison and explanation, the left side shows the attributes that cannot be modified. The code is as follows

[
'attribute' => 'is_delete',
'class'=>'kartik\grid\EditableColumn',
'editableOptions'=>[
'inputType'=>\kartik\editable\Editable::INPUT_DROPDOWN_LIST,
'asPopover' => false,
'data' => Article::itemAlias('is_delete'),
],
'value' => function ($model) {
return Article::itemAlias('is_delete', $model->is_delete);
},
'filter' => Article::itemAlias('is_delete'),
],

Fourth, let’s explain the date component and time component. First take a screenshot to see the effect, and then install it

//日期组件
composer require kartik-v/yii2-widget-datepicker "@dev"
//时间组件
composer require kartik-v/yii2-widget-datetimepicker "*"
//日期组件
[
'attribute' => 'created_at',
//这个设定表格的宽度
// 'headerOptions' => ['width' => '150px'],
'class'=>'kartik\grid\EditableColumn',
'editableOptions'=>[
'inputType'=>\kartik\editable\Editable::INPUT_DATE,
'asPopover' => false,
//这个设定我们组件的宽度
'contentOptions' => ['style'=>'width:180px'],
'options' => [
'pluginOptions' => [
//设定我们日期组件的格式
'format' => 'yyyy-mm-dd',
]
],
],
'format' => ['date', 'Y-m-d'],
],
//时间组件
[
'attribute' => 'updated_at',
// 'headerOptions' => ['width' => '150px'],
'class'=>'kartik\grid\EditableColumn',
'editableOptions'=>[
'inputType'=>\kartik\editable\Editable::INPUT_DATETIME,
'asPopover' => false,
'contentOptions' => ['style'=>'width:250px'],
],
],

Basically, these are the 4 types. After the view is configured, we need to configure the controller layer for asynchronous operation. Let’s see how it works.

Statement: If your gridview is within the view article/index, then you need to operate within the index of the article controller for the next operation.

use yii\helpers\Json;
public function actionIndex()
{
$searchModel = new ArticleSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
if (Yii::$app->request->post('hasEditable')) {
$id = Yii::$app->request->post('editableKey');
$model = Article::findOne(['id' => $id]);
$out = Json::encode(['output'=>'', 'message'=>'']);
$posted = current($_POST['Article']);
$post = ['Article' => $posted];
if ($model->load($post)) {
$model->save();
$output = '';
isset($posted['title']) && $output = $model->title;
// 其他的这里就忽略了,大致可参考这个title
}
$out = Json::encode(['output'=>$output, 'message'=>'']);
echo $out;
return;
}
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}

This is the introduction to the Yii2 GridView method of directly modifying data on the list page introduced by the editor. I hope it will be helpful to you. If you want to know more, please pay attention to the Bangkejia website.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1127891.htmlTechArticleYii2 GridView implements the method of directly modifying data on the list page. What does yii2gridview mean? Let me briefly describe the needs mentioned by the editor. Look, your list page...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Explain how load balancing affects session management and how to address it.Explain how load balancing affects session management and how to address it.Apr 29, 2025 am 12:42 AM

Load balancing affects session management, but can be resolved with session replication, session stickiness, and centralized session storage. 1. Session Replication Copy session data between servers. 2. Session stickiness directs user requests to the same server. 3. Centralized session storage uses independent servers such as Redis to store session data to ensure data sharing.

Explain the concept of session locking.Explain the concept of session locking.Apr 29, 2025 am 12:39 AM

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

Are there any alternatives to PHP sessions?Are there any alternatives to PHP sessions?Apr 29, 2025 am 12:36 AM

Alternatives to PHP sessions include Cookies, Token-based Authentication, Database-based Sessions, and Redis/Memcached. 1.Cookies manage sessions by storing data on the client, which is simple but low in security. 2.Token-based Authentication uses tokens to verify users, which is highly secure but requires additional logic. 3.Database-basedSessions stores data in the database, which has good scalability but may affect performance. 4. Redis/Memcached uses distributed cache to improve performance and scalability, but requires additional matching

Define the term 'session hijacking' in the context of PHP.Define the term 'session hijacking' in the context of PHP.Apr 29, 2025 am 12:33 AM

Sessionhijacking refers to an attacker impersonating a user by obtaining the user's sessionID. Prevention methods include: 1) encrypting communication using HTTPS; 2) verifying the source of the sessionID; 3) using a secure sessionID generation algorithm; 4) regularly updating the sessionID.

What is the full form of PHP?What is the full form of PHP?Apr 28, 2025 pm 04:58 PM

The article discusses PHP, detailing its full form, main uses in web development, comparison with Python and Java, and its ease of learning for beginners.

How does PHP handle form data?How does PHP handle form data?Apr 28, 2025 pm 04:57 PM

PHP handles form data using $\_POST and $\_GET superglobals, with security ensured through validation, sanitization, and secure database interactions.

What is the difference between PHP and ASP.NET?What is the difference between PHP and ASP.NET?Apr 28, 2025 pm 04:56 PM

The article compares PHP and ASP.NET, focusing on their suitability for large-scale web applications, performance differences, and security features. Both are viable for large projects, but PHP is open-source and platform-independent, while ASP.NET,

Is PHP a case-sensitive language?Is PHP a case-sensitive language?Apr 28, 2025 pm 04:55 PM

PHP's case sensitivity varies: functions are insensitive, while variables and classes are sensitive. Best practices include consistent naming and using case-insensitive functions for comparisons.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),