2017-06-02 130 views
0

除了少数视图外,我想在大多数视图中使用后退按钮。我做了这样的按钮:Laravel中的后退按钮问题

<div class="row back"> 
    <div class="col-sm-12"> 
     <div class="col-sm-3 pull-right"> 
      <button class="btn btn-primary pull-right" onclick="goBack()"><span><i class="fa fa-chevron-left"></i> Back</span></button> 
     </div> 
    </div> 
</div> 

而且,这里是脚本。

<script> 
    function goBack() { 
     window.history.back(); 
    } 
</script> 

的一种方法是将这些每一个看法,但我有超过100个浏览等等,这是乏味的这些添加到每个页面,如果我需要一些变化以后这将是困难的。

我已经添加了这些掌握刀片并尝试使用脚本的每一页,我并不需要类似下面的按钮删除HTML内容:

<script type="text/javascript"> 
    jQuery(document).ready(function ($) { 
     $('.back').css('display','none'); 
    }); 
</script> 

主要问题是这样的脚本工程进展缓慢和后退按钮出现一些可见的时间,即页面加载时。我怎么能摆脱这个?

任何帮助表示赞赏。

+1

您将样式添加到'css'中。添加文档准备好这将等待DOM准备就绪意味着按钮在那里它将隐藏 – guradio

+0

$('。back')。remove()'在那里有相同的效果 –

+0

尝试将脚本放在''部分。 – linuxartisan

回答

1

由于您要采用将后退按钮添加到每个视图然后在某些视图中禁用它的方法。你可以这样做。

@if (!isset($disableBackButton)) 
    <div class="row back"> 
     <div class="col-sm-12"> 
      <div class="col-sm-3 pull-right"> 
       <button class="btn btn-primary pull-right" onclick="goBack()"><span><i class="fa fa-chevron-left"></i> Back</span></button> 
      </div> 
     </div> 
    </div> 
@endif 

然后将此添加到您不希望显示后退按钮的视图中。

{{ $disableBackButton = true }} 
+0

谢谢,它的工作原理 –

+0

我认为'{{$ disableBackButton = true}}'刀片语法中禁用了赋值? –

+1

@ThomasMoors它分配和回声真实,我们忽视。但它的工作。 – Sandeesh

1

如何将其添加到您的master.blade.php文件(或在您的所有视图中使用的文件)。然后您设置您的控制器,以便它告诉您是否需要按钮。这将是这样的:

class pageController extends Controller{ 

    public function index(){ 
     return view()->make('pages.index')->with(['hideBackButton' => true]); 
    } 

} 

和刀片,你可以这样做:

@unless(isset($hideBackButton)) 

     <div class="row back"> 
      <div class="col-sm-12"> 
       <div class="col-sm-3 pull-right"> 
        <button class="btn btn-primary pull-right" onclick="goBack()"><span><i class="fa fa-chevron-left"></i> Back</span></button> 
       </div> 
      </div> 
     </div> 

@endunless 
1

更好的方法是创建一个单独的布局backBtn.blade.php,然后将其包含在您的观点为

@include('backBtn')