yii2 - 如何在网格视图中添加空文本框并获取输入值并保存在文本文件中?
问题描述
在 yii2 crud 应用程序中,我添加了一个表单并具有一些值,它显示为一个表格。我需要添加一个与每个条目对应的空文本框,并在其中执行我的功能。
我添加了两个按钮(即)读取和写入以执行某些功能,我无法添加空文本框,这个按钮也将我带到另一个页面,现在我需要一个空文本框,以便用户可以在其中写入值,如果我单击写入按钮,值应该存储在变量中,然后我可以将其写入文本文件。
我在视图文件夹中的索引是:
['class' => 'yii\grid\ActionColumn',
'template' => '{update}{delete}{read}{write}',
'buttons' => [
'delete' => function ($url, $model) {
return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [
'title' => Yii::t('app', 'delete'),
]);
},
'update' => function ($url, $model) {
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [
'title' => Yii::t('app', 'update'),
]);
},
'read' => function ($url, $model) {
return Html::a('Read', $url, [
'title' => Yii::t('app', 'read'),
]);
},
'write' => function ($url, $model) {
return Html::a('write', $url, [
'title' => Yii::t('app', 'write'),
]);
},
],
I need to add text box and get the value from user without using db.
解决方案
Text Box
你可以用 Ajax发送,值。Or by or ...
下面的例子:创建一个空文本框(bootstrap)并发送 byform
也创建一个读取按钮来加载读取动作。还有两种方法可以更改 URL。通过urlCreator
或..
注意:要发送Text Box
到您想要的操作,请将第一个参数更改为beginForm
.
<?=Html::beginForm(['action'],'post'); ?> // form action
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\CheckboxColumn'],
'id',
// 'test',
['class' => 'yii\grid\ActionColumn', 'buttonOptions' => ['style'=>'float:left; margin: 6px;'],
// 'contentOptions' => ['class' => td tag..],
'template' => '{update}{delete}{read}{write}',
'buttons' => [
'read' => function ($url, $model) {
return Html::a('<span class="glyphicon glyphicon-saved"></span>',
yii\helpers\Url::to(['read', 'id' => $model->id]), [ // default URL : $url
'title' => Yii::t('app', 'reed'),
'style' => 'float:left;margin: 6px;',
]);
},
'write' => function ($url, $model) {
return Html::beginTag('div', ['class'=>'input-group has-primary has-feedback', 'style' => 'float:unset; margin-left:55px;'])
.Html::tag('span', '<i class="glyphicon glyphicon-saved"></i>', ['class' => 'input-group-addon'])
.Html::textInput("write[$model->id]",'', ['label' => 'sss' ,'class' => 'form-control input-sm'])
.Html::tag('div', Html::submitButton('Write', ['id'=>"smt",'class' =>'btn btn-primary btn-sm']), ['class' => 'input-group-btn'])
. Html::endTag('div');
},
],
// 'urlCreator' => function ($action, $model, $key, $index) { // You also can change URLs
// if ($action === 'read') {
// $url ='read?id='.$model->id;
// return $url;
// }elseif ($action === 'write') {
// $url ='write?id='.$model->id;
// return $url;
// }
// }
],
],
]); ?>
<?= Html::endForm();?>
如果你使用Pjax,你必须把'data-pjax' => ''
也可以$.ajax
用于发送输入...通过点击事件或更改事件
在控制器中:
if ( \Yii::$app->request->post() ) {
print_r(\Yii::$app->request->post());
#code...
推荐阅读
- protractor - 使用 Protractor 在不同版本的 chrome 上运行测试
- asp.net-core - Html Beginform with button click 在.net core mvc中不起作用
- reactjs - React JS API Post 抛出 ERR_ABORTED 415
- javascript - 迭代 Typescript 中的对象以查找属性及其值
- javascript - 我正在尝试在 localhost 中测试我的实时 Facebook 之类的聊天应用程序
- sql - 检查 SYS_REFCURSOR 是否为空
- node.js - 组件EmployeeCreateComponent的模板出现错误
- java - 无法在存储android 10中打开PDF文件
- go - 将字符串切片作为选项发送到期望接口{}的可变参数函数
- telegram - 如何在 Telegram Bot 网络服务器关闭时获取未发送的消息?