Laravel开发中如何实现博客列表项左右样式交替输出
问题原因
- 控制器存在变量名不匹配问题:你定义的变量是
$blog,但compact()传入的是blogs,会导致视图取不到数据。 - 视图代码中,单次循环内同时写了
blog--left和blog--right两个块,所以每条博客都会重复输出两次。
修改方案
1. 修正控制器代码
public function index() { $blogs = Blog::all(); return view('blog', compact('blogs')); }
2. 修正视图代码
直接用Blade循环自带的$loop变量判断奇偶,动态切换样式类即可:
@extends('layouts.app') @section('content') <div class="container"> @foreach($blogs as $blog) <div class="blog-list"> <div class="blog {{ $loop->odd ? 'blog--left' : 'blog--right' }}"> <h2 class="blog_title">{{ $blog->title }}</h2> </div> </div> @endforeach </div> @endsection
说明
$loop是Blade在@foreach循环中自动生成的内置变量,$loop->odd会在当前循环为奇数次(默认从1开始计数)时返回true,正好匹配你要的奇数序号左对齐、偶数序号右对齐的需求,不需要额外自定义计数变量。
内容的提问来源于stack exchange,提问作者user12869095
相关产品推荐
相关产品推荐

