【发布时间】:2020-07-10 23:09:16
【问题描述】:
我想搜索表用户,但在http://127.0.0.1:8000/ 上看到错误:
为 foreach() 提供的参数无效(查看: /opt/lampp/htdocs/abonamenty/resources/views/users/index.blade.php)
点击搜索按钮后出现本地主机错误404。
“找不到对象!在此服务器上找不到请求的 URL。 引用页面上的链接似乎不正确或已过时。告诉 这个页面的作者关于这个问题。如果你认为这是一个 服务器错误,请联系您的管理员。”
这是我的控制器的一部分
public function index(Request $request)
{
$data = User::sortable()->paginate(5);
return view('users.index', compact('data'))->with('i', ($request->input('page', 1) - 1) * 5);
}
public function search(Request $request)
{
$search = $request->get('search');
$data = DB::table('users')->where('surname', "%$search%")->paginate(5);
return view('users.index', ['users' => $data]);
}
我的路线:
Route::get('/home', 'HomeController@index')->name('home');
Route::group(['middleware' => ['auth']], function () {
Route::resource('roles', 'RoleController');
Route::resource('users', 'UserController');
Route::resource('permissions', 'PermissionController');
Route::resource('products', 'ProductController');
Route::get('/search', 'UserController@search');
Route::get('data', 'UserController@index');
Route::get('posts', 'PostController@index');
});
我的看法:
@extends('layouts.app')
@section('content')
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2>Zarządzanie kontami użytkowników</h2>
</div>
<div class="col-md-4">
<form action="/search" method="get">
<div class="input-group">
<input type="search" name="search" class="form-control">
<span class="input-group-prepend">
<button type="submit" class="btn btn-primary">Wyszukaj</button>
</span>
</div>
</form>
</div>
<div class="pull-right">
<a class="btn btn-success" href="{{ route('users.create') }}"> Utwórz nowego użytkownika</a>
</div>
</div>
</div>
<br>
@if ($message = Session::get('success'))
<div class="alert alert-success">
<p>{{ $message }}</p>
</div>
@endif
<table class="table table-bordered">
<tr>
<th scope="col">@sortablelink('id', 'Numer')</th>
<th scope="col">@sortablelink('name', 'Imię')</th>
<th scope="col">@sortablelink('surname', 'Nazwisko')</th>
<th scope="col">@sortablelink('showname', 'Nazwa wyświetlania')</th>
<th scope="col">@sortablelink('email', 'Email')</th>
<th>Rola</a></th>
<th width="280px">Akcja</a></th>
</tr>
@foreach ($data ?? '' as $key => $user)
<tr>
<td>{{ ++$i ?? '' ?? '' }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->surname }}</td>
<td>{{ $user->showname }}</td>
<td>{{ $user->email }}</td>
<td>
@if(!empty($user->getRoleNames()))
@foreach($user->getRoleNames() as $v)
<label class="badge badge-success">{{ $v }}</label>
@endforeach
@endif
</td>
<td>
<a class="btn btn-info" href="{{ route('users.show',$user->id) }}">Wiecej informacji</a>
<a class="btn btn-primary" href="{{ route('users.edit',$user->id) }}">Edytuj użytkownika</a>
{!! Form::open(['method' => 'DELETE','route' => ['users.destroy', $user->id],'style'=>'display:inline']) !!}
{!! Form::submit('Usuń', ['class' => 'btn btn-danger']) !!}
{!! Form::close() !!}
</td>
</tr>
@endforeach
</table>
{!! $data ?? ''->appends(request()->except('page'))->render() !!}
<!--{!! $data ?? ''->render() !!}-->
<p class="text-center text-primary"><small>ARTplus 2020</small></p>
@endsection
【问题讨论】:
-
在您看来,您需要检查并查看您的
$data变量是什么。您可以使用dd命令(laravel.com/docs/7.x/helpers#method-dd)进行检查。它应该根据文档laravel.com/docs/7.x/… 返回一个 LengthAwarePaginator。如果它不是一个它是空的,你会遇到你正在做的问题$data ?? ''。