Есть GridView в котором выводиться с помощью функции для каждой строки input и кнопка, при нажатии на которою контент input должен сохранятся в буфер.
Для этого я использую библиотеку
clipboard.js, все делаю по инструкции, и оно правда работает, но есть пару багов (один баг - самой библиотеки, а другой, видимо, мой):
- не копируется контент с input свойство disabled которого стоит false.
- копируется контент, всегда только первого input.
Вот так я делаю реализацию GridView и виджета для вывода input:
GridView:<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'name',
[
'attribute' => 'file',
'format' => 'raw',
'label' => 'File',
'value' => function($data){
return FileManagerInputWidget::widget([
'path' => Url::to('@fileManager/'.$data['file']),
]);
}
]);
?>
FileManagerInputWidget:<?php
namespace common\widgets;
use yii\base\Widget;
class FileManagerInputWidget extends Widget
{
public $path;
function init()
{
}
function run()
{
return $this->render('file-manager-input',[
'path' => $this->path,
]);
}
}
file-manager-input.php<?php
use yii\helpers\Html;
use yii\web\AssetBundle;
use yii\web\View;
/**
* @var $this View
* */
AssetBundle::register($this);
$this->beginPage();
?>
<!DOCTYPE html>
<html>
<head>
<?php
$this->head();
?>
<?php $this->registerJs('(function(){
new Clipboard(\'#copy\');
})();')?>
</head>
<body>
<?php $this->beginBody()?>
<div class="row">
<div class="col-lg-6">
<div class="input-group">
<?= Html::input('text', null ,$path,
[
'class'=> 'form-control',
'id' => 'link',
])
?>
<span class="input-group-btn">
<?= Html::button('Copy',
[
'id' => 'copy',
'class' => 'btn btn-default',
'data-clipboard-target' => '#link',
])?>
</span>
</div>
</div>
</div>
<?php $this->endBody()?>
</body>
</html>
<?php
$this->endPage();
?>
Копирование есть, но копирует только с самого первого инпута. Как это можно исправить ?
Я думал - это из за того, что я так реализовываю вывод инпутов и кнопок в GridView, но сделал по-другому и этот баг остался!
Что я делаю не правильно?