Как настроить файл импорта в OroCRM

Я хочу добавить кнопку импорта в свое приложение, чтобы импортировать файл на сервер, после чего я сам обработаю файл. Это означает, что я просто хочу повторно использовать кнопку импорта и диалоговое окно импорта, но в OroCRM я должен использовать процессор и службу импорта, обслуживаемую OroCRM. Как я могу просто использовать кнопку импорта и диалоговое окно импорта, не используя способ импорта файла OroCRM?
Спасибо большое. 🙂

0

Решение

Если вы не хотите использовать импорт OroCrm. Тогда вы можете сделать это, как этот процесс. Это может помочь вам.

Следуй этим шагам.

Шаг 1. (index.html.twig)

{% set html %}
{{ UI.dropdownItem({
'path': '#',
'aCss':  'import',
'title': 'Import File',
'label': 'Import File',
'iCss': 'fa-download'
}) }}

{% endset %}

{{ UI.dropdownButton({
'label': 'Import File',
'iCss': 'fa-download',
'aCss': 'pull-right',
'html': html
}) }}

Шаг 2 (в index.html.twig). Создать модальный раздел.

{# Modal popup starts here #}
<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">

<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title file-add-h">Select Import File</h4>
<h4 class="modal-title file-report-h" style="display:none;">Import File Report</h4>
</div>
<div class="modal-body">
<div id="file-add">
<input type="file" name="File Upload" id="txtFileUpload" accept=".csv" />
<button type="button" class="btn btn-info btn-lg pull-right submit-file">Submit</button>
</div>
<div id="file-report" style="display:none;">               </div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>

</div>
</div>
{# modal popup end here #}

Шаг 3 (в файле JavaScript)

{# javascript #}

// Set the target
$(document).ready(function () {
$(".import").attr('data-toggle', 'modal');
$(".import").attr('data-target', '#myModal');
});

// Method that checks that the browser supports the HTML5 File API
function browserSupportFileUpload() {
var isCompatible = false;
if (window.File && window.FileReader && window.FileList && window.Blob) {
isCompatible = true;
}
return isCompatible;
}

function importFile(flag) {
if (!browserSupportFileUpload()) {
alert('The File APIs are not fully supported in this browser!');
} else {
var data = null;
var file = $('#txtFileUpload')[0].files[0];
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function (event) {
var csvData = event.target.result;
data = $.csv.toArrays(csvData);
if (data && data.length > 0) {
//console.log(data);
var jsonArr = [];
for (var i = 0; i < data.length; i++) {
if (i !== 0)
{
var json_obj = {};
for (var j = 0; j < data[0].length; j++) {
json_obj[data[0][j]] = data[i][j];
}
jsonArr.push(json_obj);
}
}

$.ajax({
url: '{{path('your_import_controller_path')}}',
type: 'POST',
data: {'data': JSON.stringify(jsonArr), 'flag': flag},
success: function (response, status, xhr) {
alert(response);
}
});

} else {
alert('No data to import!');
}
};
reader.onerror = function () {
alert('Unable to read ' + file.fileName);
};
}
$('#txtFileUpload').val("");
$("#file-report").html("");
$(".file-add-h").show();
$(".file-report-h").hide();
$("#file-add").show();
$("#file-report").hide();
$('#myModal').modal('toggle');
}

$(document).on("click", ".submit-file", function () {
importFile(0);
});

$(document).on("click", ".inser-file", function () {
importFile(0);
});

{# Тогда в вашем контроллере action #}

 /**
* @Route("/import",name="your_import_controller_path")
*/
public function importDataAction(Request $request)
{
$import_data = $request->request->get('data');
$flag = $request->request->get('flag');

$import_arr = json_decode($import_data);
$em = $this->container->get('doctrine')->getManager();

$message = '';

foreach ($import_arr as $i) {
$tbl = new EntityTableName(); // in which entity you want to insert
$tbl->setCode($i->CodeA); // CodeA is columns from excel

$em->persist($tbl);
}
$em->flush();
echo 'Records Imported Successfully';

exit;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]