【问题标题】:How to add jump-to functionality using laravel如何使用 laravel 添加跳转功能
【发布时间】:2018-03-20 12:18:18
【问题描述】:

我想实现一个跳转到功能。它基本上就像一个面包屑,但不完全是。它是dropdown,可以有左右按钮。请参阅下面的代码:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">


<div class="btn-group" role="group" aria-label="...">
  <a href="previousItemIfHas" class="btn btn-default">←</a>

  <div class="btn-group" role="group">
    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
      Jump to
      <span class="caret"></span>
    </button>
    <ul class="dropdown-menu">
      <li><a href="#">Assignment1</a></li>
      <li><a href="#">Quiz2</a></li>
      <li><a href="#">Quiz4</a></li>
      <li><a href="#">Assignment2</a></li>
    </ul>
  </div>
  
  <a href="nextItemIfHas" class="btn btn-default">→</a>
</div>



<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

控制器

$course = Course::with([
   'assignments' => $undeleted,
   'quizzes' => $undeleted,
   'add_links' => $undeleted
])->findOrFail($course_id);
$course_items = collect($course->assignments);
$course_items = $course_items->merge(collect($course->quizzes));
$course_items = $course_items->merge(collect($course->add_links));
$course_items = $course_items->sortBy('item_number');

想要的结果:
如果$course 循环,它可以列出按item_number 排序的项目。如果你点击第一项,那么应该有no left arrow,和最后一项一样,如果你点击最后一项,应该有no @987654329 @。项目列表在我创建的dropdown 中列出。

问题 如果item 是第一项,我不知道如何添加条件,这样我就可以删除左键,与最后一项相同。

注意:我使用的是 laravel 5.1

【问题讨论】:

  • 那么箭头按钮的行为是什么?它们是否链接到上一页和下一页?另外,下拉项目本身也是链接吗?如果它们是链接,您是重新渲染标记服务器端(刀片)还是在前端处理转换?
  • 类似这样的:introjs.com ?
  • @alepeino 是的,它们是链接,left arrow 是集合中的前一项,right arrow 是下一项。是的,下拉项目也是链接。我已经列出了这些项目,但我无法弄清楚left and right 按钮的逻辑
  • @ThomasMoors 有点像,但请看我上面的标记。
  • @Hash - 查看paginators

标签: php html laravel-5


【解决方案1】:

我认为你的意思是在模板中:

你可以使用

@foreach ($users as $user)
  <p>This is user {{ $user->id }}</p>
@endforeach

在“foreach”循环中你有变量循环

@foreach ($users as $user)

@if ($user == reset($users )) 
    This is the first iteration.
@endif

@if ($user == end($users))
    This is the last iteration.
@endif

<p>This is user {{ $user->id }}</p>

@endforeach

这样你就可以看到是第一项还是最后一项

更多:

http://php.net/manual/en/function.reset.php

http://php.net/manual/en/function.end.php

【讨论】:

  • 嗨彼得,我正在使用 Laravel5.1
  • 然后使用@if ($item == reset($items )) First Item: @endif
  • 你能编辑你的答案吗?然后链接laravel的reset()
  • 你为什么使用用户?而不是我需要的实际数据?看看我的控制器。
  • 请客气。
【解决方案2】:

你好试试这个

它会从没有上一个按钮开始,当你点击任何有上一个的东西时,会显示上一个,当你点击任何没有下一个的东西时,下一个将被隐藏..等等..

将 id="next" 赋予下一个按钮,将 id="prev" 赋予上一个按钮

请运行这个 sn-p

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">


<div class="btn-group" role="group" aria-label="...">
  <a href="previousItemIfHas" class="btn btn-default" id="prev">←</a>

  <div class="btn-group" role="group">
    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
      Jump to
      <span class="caret"></span>
    </button>
    <ul class="dropdown-menu">
      <li><a href="#">Assignment1</a></li>
      <li><a href="#">Quiz2</a></li>
      <li><a href="#">Quiz4</a></li>
      <li><a href="#">Assignment2</a></li>
    </ul>
  </div>
  
  <a href="nextItemIfHas" class="btn btn-default" id="next">→</a>
</div>



<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script>
$('#prev').hide();
$(".dropdown-menu li").click(function(){
      if($(this).next('li').length <= 0) {
      $('#next').hide();
      } else {
          $('#next').show();
      }

      if($(this).prev('li').length <= 0) {
           $('#prev').hide();
      } else {
           $('#prev').show();
      }
    
   });
</script>

【讨论】:

  • 这很好,但是如果我访问链接结果会有所不同,我的意思是如果您单击上一个按钮 (如果您在第一项中) 然后页面重定向到该页面,然后上一个按钮仍然存在。
  • 你好@Hash,我没明白:(,你能解释一下吗..?
  • 我很抱歉造成混乱。我的意思是,我尝试了您的回答,但是当我单击prev 按钮时,它会将我重定向到list (e.g. assignment, quiz etc.) 页面上的第一项,但是上一个按钮仍然存在,因为我在列表中的第一页或第一项,
  • 列表(e.g. assignment, quiz etc.)有自己的链接,每一项都有自己的链接
  • 你试过sn-p了吗?
猜你喜欢
  • 2023-02-10
  • 2023-02-11
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 2018-03-11
相关资源
最近更新 更多