2015-05-12 98 views
2

我在laravel blade中有以下JavaScript代碼。Jquery從LaravelBalde追加內容

<script> 
    function banUser(id) { 
     $.ajaxSetup({ 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
      } 
     }); 
     $.ajax({ 
       method: "PUT", 
       dataType: "json", 
       url: '{{URL::route('api.user.update ',['user'=>null])}}/' + id, 
       data: { 
        status: "banned", 
       } 
      }) 
      .done(function(json) { 
       processBanJson(json); 
      }); 
    } 

    function unbanUser(id) { 
     $.ajaxSetup({ 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
      } 
     }); 
     $.ajax({ 
       method: "PUT", 
       url: '{{URL::route('api.user.update ',['user '=>null])}}/' + id, 
       data: { 
        status: "registered", 
       } 
      }) 
      .done(function(json) { 
       processBanJson(json); 
      }); 
    } 

    function processBanJson(json) { 
     if (json.success) { 
      if (json.user.status == "banned") { 
       //The user was just banned 
       $('#alert-area').append('@include('backend.user._partials.alerts.user-banned')'.trim()); 
       $('#Ban-User-' + json.user.id + '-btn').hide(); 
       $('#Unban-User-' + json.user.id + '-btn').show(); 
      } else { 
       //The user is no longer banned 
       alert("Unbanned User!"); 
       $('#alert-area').append(); 
       $('#Ban-User-' + json.user.id + '-btn').show(); 
       $('#Unban-User-' + json.user.id + '-btn').hide(); 
      } 
     } else { 
      alert("Error Occured"); 
     } 
     $('#User-Status-' + json.user.id).html(json.user.status); 
    } 
</script> 

和我... alerts.user被禁刀片包含以下內容:

<div class="alert alert-success alert-dismissable"> 
    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> 
    <h4><i class="icon fa fa-check"></i> Alert!</h4> 
    <p>User Banned!</p> 
</div> 

被編譯後,輸出看起來是這樣的: 對不起, 問題是,所呈現的HTML看起來像這樣:

... 
if(json.user.status=="banned") 
{ 
    //The user was just banned 
    $('#alert-area').append(('<div class="alert alert-success alert-dismissable"> 
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> 
<h4><i class="icon fa fa-check"></i> Alert!</h4> 
<p>User Banned!</p> 
</div>').trim()); 
    $('#Ban-User-'+json.user.id+'-btn').hide(); 
    $('#Unban-User-'+json.user.id+'-btn').show(); 
} 
... 

我知道它需要成爲一條線,或者逃脫。但我試圖找到一個乾淨的解決方案來逃避,或者縮小我的警報視圖中的內容,以便JavaScript無效,而不必轉義實際的視圖文件本身。

+0

什麼問題?什麼是錯誤。 – Luceos

+0

對不起,我更新了問題以包含編譯後的輸出。 但是,通過以這種方式包含視圖,它不會意識到該字符串包含多行,並且如果可能的話,我寧願不轉義視圖文件iteself。 所以我的問題是有沒有一種方法讓我逃脫/縮小這隻包括通過JavaScript或通過laravel包我只是不知道/還沒有找到呢? –

回答

0

我需要把它放到一個包中......但是,我想我創建了一個解決方案; 如果有人可以驗證/改善,那會很棒!

下進入我的processBanJson

$('#alert-area').append('@oneLine('backend.user._partials.alerts.user-banned')'); 

儘管其目前在我的routes.php文件的文件;一個簡單的擴展

/* 
* Our Custom oneLine Blade Function 
* 
* Imports a blade, and minifies it into one line 
*/ 
Blade::directive('oneLine', function($expression) 
{ 
    return "<?php echo implode(\" \",explode(\"\n\",\$__env->make($expression, array_except(get_defined_vars(), array('__data', '__path')))->render())); ?>"; 
});