帮助程序类中的列排序方法仅在一个表上工作,而在同一应用程序中却不在另一表上

时间:2019-01-02 16:44:46

标签: php mysql laravel sorting helper

试图弄清楚为什么这种功能(我认为很简单)不起作用。

快速了解背景,此应用是由另一家公司制作的,我被带来对ui和功能进行一些更改。我一直在学习该系统以及它同时建立的框架(Laravel 5.1)。整个事情都在docker容器中运行。

表助手类

<?php
namespace App\Helpers;
use Illuminate\Support\Facades\Log;

class TableHelper {
  public static function uriColumnSorter($label, $sort, $color = '#758292') {

    $str = \Request::url();

    //get the variables in the url e.g. sort: col name, direction: asc
    $data = \Input::all();

    //if there is a _url var in the url, unset it
    if (isset($data['_url'])) {
        unset($data['_url']);
    }

    //the column to sort, set to the param passed in
    $data['sort'] = $sort;

    //Either set to desc if direction already exists and is asc, or set to asc
    $direction = $data['direction'] = (isset($data['direction']) && $data['direction'] == 'asc') ? 'desc' : 'asc';

    //build query out of the data array if it has values
    if (count($data) > 0) {
        $str .= '?' . http_build_query($data);
    }

    //throw an a tag back with a link with the sorted query
    echo '<a href="' . $str . '" style="color: ' . $color . '">' . $label . ' <i class="fa fa-sort-alpha-' . $direction . '" aria-hidden="true" style="margin-left: 12px;"></i></a>';
}
}

太好了,您在需要的地方调用它,它会弹出一个标记,该标记根据列对表进行排序。这是排序在其中起作用的一个实例

<table class="table table-striped">
        <thead>
            <tr>
                <th class="col-md-3">{{ \App\Helpers\TableHelper::uriColumnSorter('Col Label', 'model.value_wanted') }}</th>
                <th>Another Col</th>
                <th>Last Col</th>
...

看起来很直接,它的示例无法正常工作,它的表具有相同的布局,并且我以完全相同的方式放置了helper方法调用,只是交换了数据名称。

该函数调用,并且表头中的排序链接在那里并且可以单击。它只是不会改变排序。

有什么可以阻止它起作用?是否需要指示该列可在模型中的某个地方排序?还是docker需要强制更新?不会这样,因为该方法可以执行,但是我不确定docker对我来说是新的。

提前谢谢!

0 个答案:

没有答案