【问题标题】:Laravel Custom Presenter / Pagination Class 'Illuminate\Pagination\Presenter' not foundLaravel 自定义演示者/分页类 'Illuminate\Pagination\Presenter' 未找到
【发布时间】:2016-03-14 15:40:26
【问题描述】:

大家好,我正在使用 https://laravelista.com/laravel-custom-pagination-presenter 作为指南创建自定义 Laravel 5 分页演示器,我已按照说明进行操作,但我的应用程序在查找 Illuminate\Pagination\Presenter 类(我从中扩展)时遇到问题。

我正在呼叫我认为的演示者

查看

 <div class="cf">
    <div class="columns large-6 text-left paginate">

    <?php 
        $presenter = new App\Pagination\Presenters\customPresenter($paginator);

....

我收到的错误是

FatalErrorException in customPresenter.php line 7:
Class 'Illuminate\Pagination\Presenter' not found

我的 CustomPresenter 类看起来像;

<?php 

namespace App\Pagination\Presenters;

use Illuminate\Pagination\Presenter;

class customPresenter extends Presenter { << error occurs here

/**
 * Get the previous page pagination element.
 *
 * @param  string  $text
 * @return string
 */
public function getPrevious($text = '<i class="fa fa-angle-left"></i>')
{
    // If the current page is less than or equal to one, it means we can't go any
    // further back in the pages, so we will render a disabled previous button
    // when that is the case. Otherwise, we will give it an active "status".
    if ($this->currentPage <= 1)
    {
        return $this->getDisabledTextWrapper($text);
    }

....

我错过了一个包裹吗?我已经完成了作曲家更新并将我的 customPresenter 类添加到自动加载中。

非常感谢任何帮助

干杯

【问题讨论】:

标签: php laravel laravel-5 pagination


【解决方案1】:

use 语句更改为:

use Illuminate\Contracts\Pagination\Presenter

您还可以扩展现有演示者之一,例如(文件位于 App\Extensions 文件夹中)。

<?php namespace App\Extensions;

use Illuminate\Pagination\BootstrapThreePresenter;
use Illuminate\Support\HtmlString;

class CustomPagination extends BootstrapThreePresenter {

    public function render()
    {
        if ($this->hasPages()) {
            return new HtmlString(sprintf(
                '<ul class="pagination pagination-sm no-margin pull-right">%s %s %s</ul>',
                $this->getPreviousButton(),
                $this->getLinks(),
                $this->getNextButton()
            ));
        }

        return '';
    }

}

然后你可以在你的刀片中使用它:

{{ with(new App\Extensions\CustomPagination($data))->render() }}

【讨论】:

    【解决方案2】:

    按照 Niraj Shah 的回答,我发现一个很好的技巧是在控制器中调用 Presenter 方法:

    $data->presenter(function($paginator) {
        return new App\Extensions\CustomPagination($paginator)
    });
    

    现在使用 links() 或 render() 的结果是 CustomPagination。

    注意:$data 是一个 Paginator 实例。

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 1970-01-01
      • 2019-07-11
      • 2016-11-23
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多