如何在Laravel 5.4中基于路由参数显示内容(HTML)

时间:2017-05-03 02:37:49

标签: php html laravel laravel-5.4

我是Laravel的新手,我在电子商务应用程序中工作。在这个应用程序中,需要显示不同页面(1,2,3,...等)中的所有产品。路线是:/ products / 1,/ products / 2等。我目前正在使用每页显示10个产品的模式。

例如,如果有31个产品,则会有4个页面(页面底部有4个按钮)。

第1页 - > 10个产品;

第2页 - > 10个产品;

第3页 - > 10个产品;

第4页 - > 1个产品;

我的问题是如何在数据库中进行迭代并将这些产品分布在各自的路径中。到目前为止我做了什么(使用刀片):

@extends("template")

@section("content")

  @for($i = 0; $i < $number_of_buttons; $i++) <!-- iterate trough the number of buttons -->

    @for($k = 0; $k < $NUMBER_OF_PRODUCTS_PER_PAGE; $k++) <!-- iterate trough all the products, but showing only a quantity of {{$NUMBER_OF_PRODUCTS_PER_PAGE}} products per page -->
      <div class="row">
    	<div class="col-xs-6">
    	  <img src="{{$products[$k]->image}}" class = "img-responsive" alt = "{{$products[$k]->name}}">
    	</div>
    	<div class="col-xs-6">
    	  <h2>{{$products[$k]->name}}</h2>
    	  <p>{{$products[$k]->description}} </p>
          <p>{{$products[$k]->value}} </p>
          <a href="/details/{{$products[$k]->id}}" class="btn btn-default">Details</a>
    	</div>
      </div>
    @endfor

  @endfor

@stop

逻辑本身似乎有点不对,但我如何在每条路线中插入产品?在上面的示例中,所有路线将具有相同数量的产品。我想知道如果可能的话,如何在此代码中指定每条路由将接收的内容。如果我不够清楚,请告诉我。

2 个答案:

答案 0 :(得分:0)

分页正是我所寻找的。我花时间思考一个逻辑来显示页面中的所有产品lol。正如我所说,我是laravel的新手,因此我不知道这种方法。谢谢@Ohgodwhy和@Scott

答案 1 :(得分:0)

控制器中的

    $products = Product::paginate(10);
    return View::make('pagination', compact('products'));
模板中的

@extends("template")

@section("content")
        @foreach($products as $product)
        <div class="row">
        <div class="col-xs-6">
          <img src="{{$product->image}}" class = "img-responsive" alt = "{{$product->name}}">
        </div>
        <div class="col-xs-6">
          <h2>{{$product->name}}</h2>
          <p>{{$product->description}} </p>
          <p>{{$product->value}} </p>
          <a href="/details/{{$product->id}}" class="btn btn-default">Details</a>
        </div>
      </div>
        @endforeach
      <div class="pagination"> {{ $products->links() }} </div>
    @stop