我有一个表users
,标题为:用户名,姓名,电子邮件,类型,组,状态。
现在,我在Controller函数中将它们设置为group
。
我想把它提升到一个新的水平,以改善我的桌面用户体验。
username
,我想订购username
。如果我可以在不刷新页面的情况下执行此操作,那将非常棒。 我需要知道Ajax或jQuery才能完成这项工作吗? 有可能在PHP中这样做吗?我正在使用Laravel 4。
对此问题中所有贡献的所有用户THANKS
。
UserController.php
public function index()
{
//get all the users from the database
$users = User::where('type','!=','Distributor')
->orderBy('group', 'asc')
->paginate(20);
// return the view and give it a title
return View::make('users.index')
->with('users',$users);
}
修改
My Table View
<table class="table table-hover">
@include('sub.index.tbody') // this line is just the detail of the table.
</table>
答案 0 :(得分:2)
您可以使用jquery Datatable轻松完成此操作,无需修改甚至一行PHP代码。这是simple example
<!DOCTYPE html>
<html>
<head>
<!-- Loading Table CSS -->
<link rel="stylesheet" href="//cdn.datatables.net/1.10.4/css/jquery.dataTables.css">
<!-- Loading jQuery -->
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<!-- Loading DataTable -->
<script src="//cdn.datatables.net/1.10.4/js/jquery.dataTables.min.js"></script>
</head>
<body>
<div style="width:70%; margin:0 auto;">
<table id="example" class="display" cellspacing="0" width="100%">
<thead>
<!-- Your heading -->
<tr>
<th>Username</th>
<th>Name</th>
<th>Email</th>
<th>Type</th>
<th>Group</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<!-- Your data -->
<tr>
<td> some user</td>
<td> name here </td>
<td>group </td>
<td>status</td>
<td>2011/04/25</td>
<td>status </td>
</tr>
</tbody>
</table>
</div>
<script>
$(document).ready(function() {
// init datatable on #example table
$('#example').DataTable();
});
</script>
</body>
</html>
将其与您的观点相结合
<table id="datatable" class="table table-hover">
@include('sub.index.tbody') // this line is just the detail of the table.
</table>
<script>
$(document).ready(function() {
$('#datatable').DataTable();
});
</script>
假设您使用的是bootstrap,请在<head>
标记
<link rel="stylesheet" href="//cdn.datatables.net/plug-ins/9dcbecd42ad/integration/bootstrap/3/dataTables.bootstrap.css">
<script src="//cdn.datatables.net/plug-ins/9dcbecd42ad/integration/bootstrap/3/dataTables.bootstrap.js"></script>
答案 1 :(得分:2)
我认为最好在客户端处理此问题并使用javascript。 在你的代码中,你的$ users类型是json数组,你可以将它传递给js, 像
//users.index view
<script>
var users = {{$users}}
function sortOrderby(typeOrder)
{
//logic of sort
}
</script>
<div>
<!-- inject your js array in your HTML table
</div>
并在您的视图中使用此变量。 定义标题点击的操作,并为这些操作调用sortOrderby函数
答案 2 :(得分:0)
尝试:
$users = DB::table('*tablename*')->orderBy('*columnname*', 'asc')->get();
同样适用于姓名,电子邮件,类型,群组和状态。您只需指定tablename和columnname
即可编辑:
$users = DB::table('*tablename*')->orderBy('*username*', 'asc')->get();
$users = DB::table('*tablename*')->orderBy('*name*', 'asc')->get();
$users = DB::table('*tablename*')->orderBy('*email*', 'asc')->get();
$users = DB::table('*tablename*')->orderBy('*type*', 'asc')->get();
$users = DB::table('*tablename*')->orderBy('*group*', 'asc')->get();
$users = DB::table('*tablename*')->orderBy('*status*', 'asc')->get();
return View::make('users.index')
->with('users',$users);
如果它们不在同一个表中,您只需更改表名并检查所使用的列名是否正确