【问题标题】:How to show/hide fields on link click?如何在链接点击时显示/隐藏字段?
【发布时间】:2017-02-16 10:19:03
【问题描述】:

我正在使用 laravel 5.3 我有一个响应导航菜单,当我单击域时,它会显示我在 DB 中已有的所有域,然后当我单击其中一个域时,我会得到相应的项目。

现在,我希望当我单击项目时,它会在表格中显示所有相应的数据。但是,这就是我得到的:

这是项目控制器:

public function index(Request $request)
{
  $projects1=DB::table('projects')->where('domain_id', '=', 1)->get();
  $projects2=DB::table('projects')->where('domain_id', '=', 2)->get();
  $projects3=DB::table('projects')->where('domain_id', '=', 3)->get();

  return view('projects.index',compact('projects', 'projects1', 'projects2', 'projects3'));
}

这是 index.blade.php :

<div class="nav-side-menu">
  <div class="brand">Menu</div>
  <i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i>
  <div class="menu-list">
    <ul id="menu-content" class="menu-content collapse out">           
      <li  data-toggle="collapse" data-target="#products" class="collapsed active">
        <a href="#"><i class="fa fa-gift fa-lg"></i> Domains <span class="arrow"></span>  </a>
      </li>
      <ul class="sub-menu collapse" id="products">
        <li  data-toggle="collapse" data-target="#domain1_projet" class="collapsed active">
          <a href="#"><i class="fa fa-gift fa-lg"></i> Domain 1 <span class="arrow"></span></a>
        </li>
        <ul class="sub-menu collapse" id="domain1_projet">
           @foreach ($projects1 as $key => $project)
             <li><a href="#">{{$project->title}}</a></li>                    
           @endforeach
           <table class="table table-bordered">
            <tr>
             <th>No</th>
             <th>title</th>
             <th>code</th>
             <th>domain_id</th>  
            </tr>
            @foreach ($projects1 as $key => $project1)
             <tr>
              <td>{{ ++$i }}</td>
              <td>{{ $project1->title }}</td>
              <td>{{ $project1->code }}</td> 
              <td>{{ $project1->domain_id}}</td>
             </tr>
           @endforeach
          </table>
         </ul>                             
         <li  data-toggle="collapse" data-target="#domain2_projet" class="collapsed active">
          <a href="#"><i class="fa fa-gift fa-lg"></i> Domain 2 <span class="arrow"></span></a>
         </li>
         <ul class="sub-menu collapse" id="domaine2_projet">
           @foreach ($projects2 as $key => $project)
            <li><a href="#">{{$project->title}}</a></li>                    
           @endforeach                    
         </ul>                  
       </ul>
     </ul>
   </div>
</div>

我在 table 之前添加的 @if 子句只是为了测试,但我需要更改它。我希望能够不以手动方式显示每个项目的数据。我也想知道点击链接时如何显示和隐藏每个项目的信息。 正如您在index.blade.php 中看到的那样,这是因为我已经知道我所做的项目名称if (($project-&gt;intitule)=="Title")elseif(($project-&gt;intitule)=="Project2") 但是,实际上我在数据库中有很多项目。我怎样才能显示所有项目,然后当我单击其中一个时,如何获得包含该特定项目信息的表格

【问题讨论】:

  • 如果你想点击特定的项目ID并显示关于这个项目的信息“不刷新页面”你可以使用AJAX。否则,如果您只想显示所有数据,请尝试在其他循环 foreach 中插入循环 foreach

标签: php laravel navigation blade


【解决方案1】:

控制器

public function index(Request $request)
{
  $projects=DB::table('projects')->get();
  return view('projects.index',compact('projects'));
}

查看

<div class="nav-side-menu">
  <div class="brand">Menu</div>
  <i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i>
  <div class="menu-list">
    <ul id="menu-content" class="menu-content collapse out">           
      <li  data-toggle="collapse" data-target="#products" class="collapsed active">
        <a href="#"><i class="fa fa-gift fa-lg"></i> Domains <span class="arrow"></span>  </a>
      </li>


      <ul class="sub-menu collapse" id="products">
        @for ($i = 0; $i < count($projects); $i++)
        <li  data-toggle="collapse" data-target="#domain1_projet{{$i}}" class="collapsed active">
          <a href="#"><i class="fa fa-gift fa-lg"></i> Domain {{$projects[$i]->domain_id}} <span class="arrow"></span></a>
        </li>


        <ul class="sub-menu collapse" id="domain1_projet{{$i}}">

             <li><a href="#">{{$projects[$i]->title}}</a></li>                    

           <table class="table table-bordered">
            <tr>
             <th>No</th>
             <th>title</th>
             <th>code</th>
             <th>domain_id</th>  
            </tr>

             <tr>
              <td>{{ $i }}</td>
              <td>{{ $projects[$i]->title }}</td>
              <td>{{ $projects[$i]->code }}</td> 
              <td>{{ $projects[$i]->domain_id}}</td>
             </tr>

          </table>
        </ul>                             
        @endfor



       </ul>


     </ul>
   </div>
</div>

试试吧!如果返回错误,请告诉我!

【讨论】:

  • 感谢您的回答。我试过这个,但是,我收到了这个错误: Collection.php 第 1320 行中的 ErrorException:未定义的偏移量:4(查看:C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\PC\resources\视图\项目\index.blade.php)
  • 试试这个,它返回多少个结果? $test = count($projects);
  • 请问我应该在哪里添加这个?
  • 控制器。在返回视图之前
  • return $test = count($projects);
猜你喜欢
  • 1970-01-01
  • 2012-03-14
  • 2017-10-21
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 2017-01-09
相关资源
最近更新 更多