【问题标题】:How to generate individual sorted pagination links in Laravel 4?如何在 Laravel 4 中生成单独的排序分页链接?
【发布时间】:2014-05-28 21:36:53
【问题描述】:

分页文档提供了有关如何为数据的分页链接添加排序的详细信息:

<?php echo $orders->appends(array('sort' => 'name', 'sort_dir'=>'asc'))->links();

生成这样的链接:

http://example.com/something?page=2&sort=name&sort_dir=asc

所以现在您有一个包含标题和值的表格以及一系列可以单击的分页链接。假设我想将标题更改为允许您按该标题排序的可点击链接。我将如何生成该 URL?

例如,假设我们当前的 URL 就是我上面所说的:

http://example.com/something?page=2&sort=name&sort_dir=asc

我想单击“名称”表头以更改排序方向。我想要的网址是:

http://example.com/something?page=2&sort=name&sort_dir=desc

我有一个控制器叫做:AdminController.php 这是使用的方法:

    public function getAdmins() {

 // CACHE SORTING INPUTS
$allowed = array('first_name', 'last_name', 'email', 'activated', 'crated_at'); // add allowable columns to search on
$sort = in_array(Input::get('sort'), $allowed) ? Input::get('sort') : 'first_name'; // if user type in the url a column that doesnt exist app will default to first_name
$order = Input::get('order') === 'asc' ? 'asc' : 'desc'; // default desc
$action = null;
// select all admins Group = 1
$admins = DB::table('users')
     ->join('users_roles', 'users.id', '=', 'users_roles.user_id')
     ->where('users_roles.role_id', '=' ,0)
    ->orderBy($sort, $order)
    ->paginate($this->perpage);

// check for actions
if (!is_null(Input::get('action'))) 
    {

            $action = Input::get('action');

            if ($action == "add")
            {
                $this->layout->content = View::make('admin.admins-add');
            }

    }
    else
    {

        // get current counter admin counts
        $counter = $admins->getFrom();
        View::share('counter', $counter);
        View::share('sort', $sort);
        View::share('order', $order);

        // share admin with template
        View::share('admins', $admins);

        $this->layout->content = View::make('admin.admins');
    }
    }

1)。如何在我的视图页面中显示 Laravel 中的列标题链接?

谢谢

【问题讨论】:

  • 当然使用javascript....这与服务器端无关。
  • 我需要生成标题链接,当你点击名字时,它会改变sort = first_name等等
  • 我明白了你在这里想要做什么......但这是客户端编码。不是服务器端。你在客户端做了什么来实现它?
  • 在客户端我有一个带有标题名字姓氏电子邮件等的表格,我想制作这些链接,如果你点击 first_name,它将带你到:example.com/… 和姓氏标头将转到:example.com/…,如果 sort_dir 是 asc 则更改为 desc
  • 当然你可以在服务器端做...检查答案

标签: php laravel laravel-4


【解决方案1】:

这是获取参数的方式:

$params = Request::except(['sort','sort_dir']);
$sort_dir = (Request::get('sort_dir') == 'asc') ? 'desc' : 'asc';
$sort = 'whataverYourColumnIs';

$attributes = array_merge(['sort' => $sort, 'sort_dir' => $sort_dir], $params);

// and for the link for example:
link_to_action('AdminsController@getIndex', 'columnName', $attributes);

【讨论】:

  • whats 'something.index' ,在我的情况下,我的路线的链接是什么? “管理员”??
  • 无论你的路线命名如何,例如可能是 admins.index。
  • 我有 Route::controller('admin', 'AdminController');
  • 并且在 AdminController 中有一个方法:getAdmins() 和 URL admin/admins
  • 我试过 'admin.admins' 我得到一个错误 undefined route?
猜你喜欢
  • 2021-08-03
  • 2014-02-24
  • 1970-01-01
  • 2013-09-18
  • 2015-07-27
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多