2016-08-09 7 views
0

ファイルをインポートするためにアプリケーションにインポートボタンを追加したいと考えています。その後、自分でファイルを処理します。つまり、インポートボタンとインポートダイアログを再利用したいのですが、OroCRMでは、プロセッサを使用し、OroCRMによってサービスをインポートする必要があります。 OroCRMのインポートファイルを使用せずにインポートボタンとインポートダイアログを使用するにはどうすればいいですか? ありがとうございました。 :)OroCRMでインポートファイルをカスタマイズするには

+0

アプリケーションは何ですか一緒に作る? Symfony2またはOrocrm?いくつかのコードスニペットでファイルをインポートするために使用するフレームワークを明確にしてください。 – Jeet

答えて

0

OroCrmインポートを使用しない場合は、それでこのプロセスのようにすることができます。それはあなたを助けるかもしれません。

次の手順を実行します。

STEP.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 
}) }} 

STEP.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 #} 

STEP.3(ジャバスクリプトファイル内)

{#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); 
     }); 

{#は、その後、あなたのコントローラのアクション#で}

/** 
* @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; 
} 
関連する問題