首页 > 解决方案 > 如何在网格视图中添加空文本框并获取输入值并保存在文本文件中?

问题描述

在 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.

标签: yii2

解决方案


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...

推荐阅读