【问题标题】:How to exclude certain styling in page2 in pagination如何在分页中排除 page2 中的某些样式
【发布时间】:2023-03-30 07:00:02
【问题描述】:

我从头开始关注 Laravel 8 中的 Jeffery Way 令人惊叹的系列,但我在分页时遇到了麻烦。在索引页面中,我们正在制作具有特定样式的最新帖子,然后前 2 个帖子具有不同的样式,然后其余帖子具有不同的样式。问题是这些样式被我们带到了 page2 和 3 以及 ...等

我只想将其设置为第 1 页或主页中的帖子,当我转到第 2 页时,我应该为所有帖子设置默认样式。

这是索引

<x-bloglayout>

    @include('posts.__header')

    @if ($posts->count())
        <x-featuredCard :post="$posts[0]" />

        @if ($posts->count() > 1)

            <div class="lg:grid lg:grid-cols-2">

                <x-postCard :post="$posts[1]" />
                <x-postCard :post="$posts[2]" />

            </div>

            <div class="lg:grid lg:grid-cols-3">
                @foreach ($posts->skip(3) as $post)
                    <x-postCard :post="$post" />
                @endforeach
            </div>

        @endif

        {{ $posts->links() }}

    @else
        <p class="text-center">No posts matches your search, please check back later</p>
    @endif



</x-bloglayout>

我尝试使用 if 指令来判断路由是否在家或 ?/page1 执行此操作,如果不执行此操作,但它似乎不起作用。

这是我的分页:

    public function index()
    {
        return view('posts.index', [
            'posts' => Post::latest()->filter(request(['search', 'category', 'author']))->paginate(6)->withQueryString(),
        ]);
    }

谢谢

【问题讨论】:

    标签: php arrays laravel pagination


    【解决方案1】:

    您可以在分页器上使用currentPage() 方法并检查它是否在第一页上。可能不是最好的方式,但这里有一个例子:

    <x-bloglayout>
    
        @include('posts.__header')
    
        @if ($posts->count())
        <x-featuredCard :post="$posts[0]" />
    
        @if ($posts->count() > 1)
    
        @if($posts->currentPage() == 1)
    
        <div class="lg:grid lg:grid-cols-2">
    
            <x-postCard :post="$posts[1]" />
            <x-postCard :post="$posts[2]" />
    
        </div>
    
        @endif
    
        <div class="lg:grid lg:grid-cols-3">
            @foreach ($posts->skip($posts->currentPage() == 1 ? 3 : 0) as $post)
            <x-postCard :post="$post" />
            @endforeach
        </div>
    
        @endif
    
        {{ $posts->links() }}
    
        @else
        <p class="text-center">No posts matches your search, please check back later</p>
        @endif
    
    </x-bloglayout>
    

    您可以从 Laravel 8.x 文档中检查 Paginator 方法:https://laravel.com/docs/8.x/pagination#paginator-instance-methods

    【讨论】:

    • $paginator-&gt;onFirstPage() "判断分页器是否在首页。" 如果不想使用currentPage() == 1
    • 你是对的,这是一种更好的方法。
    • currentPage() 完全按照我的意愿工作。但是 Laravel 发现 $paginator 是未定义的变量。它是默认传递给视图还是我应该从控制器@brombeer 做些什么?
    • $posts 是您的分页器对象。
    猜你喜欢
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多