#laravel
#laravel
Вопрос:
Хорошо, каким-то образом после того, как мне удалось исправить функцию поиска, это добавляет совершенно новую проблему. Почему-то моя переменная не определена. Этого не было до добавления функции поиска. Ошибка заключается в следующем
Неопределенная переменная: pegawais (Просмотр: C:TugasadminLTEresourcesviewspegawaiindex.blade.php )
pegawaicontroller.php
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesDB;
use AppPegawai;
class pegawaicontroller extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$pegawais = Pegawai::orderBy('id', 'ASC')->paginate(5);
return view('pegawai.index', compact('pegawais'));
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
return view('pegawai.create');
}
/**
* Store a newly created resource in storage.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
$this->validate($request, [
'kategori' => 'required',
'jabatan' => 'required',
'nama_pegawai' => 'required',
'alamat' => 'required',
'gambar_pegawai' => 'required'
]);
// upload file
$filename = time() . '.png';
$request->file('gambar_pegawai')->storeAs('public/images', $filename);
$pegawai = new Pegawai;
$pegawai->kategori = $request->input('kategori');
$pegawai->jabatan = $request->input('jabatan');
$pegawai->nama_pegawai = $request->input('nama_pegawai');
$pegawai->alamat = $request->input('alamat');
$pegawai->gambar_pegawai = $filename;
$pegawai->save();
// $pegawai = Pegawai::create($request->all());
return redirect()->route('pegawai.index')->with('message','Data berhasil dibuat!');
}
/**
* Display the specified resource.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function show($id)
{
$pegawai = Pegawai::findOrFail($id);
return view('pegawai.show', compact('pegawai'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function edit($id)
{
$pegawai = Pegawai::findOrFail($id);
return view('pegawai.edit', compact('pegawai'));
}
/**
* Update the specified resource in storage.
*
* @param IlluminateHttpRequest $request
* @param int $id
* @return IlluminateHttpResponse
*/
public function update(Request $request, $id)
{
$this->validate($request, [
'kategori' => 'required',
'jabatan' => 'required',
'nama_pegawai' => 'required',
'alamat' => 'required',
'gambar_pegawai' => 'required'
]);
// script delete tapii gagal
// if ($request->produk()->gambar_pegawai){
// Storage::delete('images/' . $request->produk()->gambar_pegawai);
// }
// update file
$filename = time() . '.png';
$request->file('gambar_pegawai')->storeAs('public/images', $filename);
$pegawai = Pegawai::find($id);
$pegawai->kategori = $request->input('kategori');
$pegawai->jabatan = $request->input('jabatan');
$pegawai->nama_pegawai = $request->input('nama_pegawai');
$pegawai->alamat = $request->input('alamat');
$pegawai->gambar_pegawai = $filename;
$pegawai->save();
// $pegawai = Pegawai::findOrFail($id)->update($request->all());
return redirect()->route('pegawai.index')->with('message', 'Data berhasil diubah!');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function destroy($id)
{
$pegawai = Pegawai::findOrFail($id)->delete();
return redirect()->route('pegawai.index')->with('message', 'Data berhasil dihapus!');
}
public function search(Request $request)
{
$q = $request->input('search');
$pegawai = Pegawai::where('nama_pegawai', 'LIKE', '%'.$q.'%')->orWhere('alamat', 'LIKE', '%'.$q.'%')->get();
return view('pegawai.index')->with('pegawai', $pegawai)->with('query', $q);
}
}
web.php
Route::get('/pegawai')->name('pegawai.index')->uses('pegawaicontroller@index');
Route::get('/search','pegawaicontroller@search');
pegawai.php (модель)
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Pegawai extends Model
{
protected $fillable = ['kategori', 'jabatan', 'nama_pegawai', 'alamat', 'gambar_pegawai', ];
}
index.php
@extends('template.adminlte')
@section('content')
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0 text-dark">Menu Pegawai</h1>
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="breadcrumb-item active">pegawai</li>
</ol>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<form action="search" method="GET" role="Search" class="form-inline ml-3">
<div class="input-group input-group-sm">
<input class="form-control form-control-navbar" type="search" placeholder="Search" aria-label="Search" name=q>
<div class="input-group-append">
<button class="btn btn-navbar" type="submit">
<i class="fas fa-search"></i>
</button>
</div>
</div>
</form>
<section class="content">
<div class="container-fluid">
<a href="{{ route('pegawai.create') }}" class="btn btn-info btnsm float-right">
<i class="fas fa-plus-circle"> Tambah Pegawai</i>
</a><br><br>
@if ($message = Session::get('message'))
<div class="alert alert-success martop-sm">
<p>{{ $message }}</p>
</div>
@endif
<table class="table martop-sm">
<thead>
<th>No</th>
<!-- <th>ID</th> -->
<th>Kategori</th>
<th>Jabatan Pegawai</th>
<th>Nama pegawai</th>
<th>Alamat</th>
<th>Foto Pegawai</th>
<th>Aksi</th>
</thead>
<tbody>
@foreach ($pegawais as $key => $pegawai)
<tr>
<td>{{ $pegawais->firstItem() $key }}</td>
<!-- <td>{{ $pegawai->id }}</td> -->
<td><a href="{{ route('pegawai.show', $pegawai->id)}}">{{ $pegawai->kategori }}</a></td>
<td><a href="{{ route('pegawai.show', $pegawai->id)}}">{{ $pegawai->jabatan }}</a></td>
<td><a href="{{ route('pegawai.show', $pegawai->id)}}">{{ $pegawai->nama_pegawai }}</a></td>
<td><a href="{{ route('pegawai.show', $pegawai->id)}}">{{ $pegawai->alamat }}</a></td>
<td><a href="{{ route('pegawai.show', $pegawai->id)}}"><img src="{{ asset('storage/images/' . $pegawai->gambar_pegawai) }}" alt="" width="100"></a></td>
<td>
<form action="{{ route('pegawai.destroy', $pegawai->id) }}" method="post">
{{csrf_field()}} {{ method_field('DELETE') }}
<a href="{{ route('pegawai.edit', $pegawai->id) }}" class="btn btn-warning btn-sm">Ubah</a>
<button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Apakah anda yakin ingin menghapusnya?');">Hapus</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
{{ $pegawais -> links() }}
</div>
</section>
</div>
@endsection
Комментарии:
1. Это опечатка! В
search
функции вашего контроллера вы возвращаетесьwith('pegawai', ...)
. Она должна бытьwith('pegawais', ...)
вместо (‘s’ отсутствует).
Ответ №1:
хотя проблема была вызвана опечаткой, здесь есть некоторая загвоздка. поэтому я добавляю ответ для вас. вы возвращаетесь к одному и тому же представлению как из индекса, так и из функции поиска. в индексе объявлена переменная pegawais
, и вы используете разбивку на страницы. вид лезвия хорошо справляется с этим. но из функции поиска ваша объявленная переменная есть pegawai
. таким образом, при возврате к представлению вы получаете сообщение об ошибке, что переменная не определена. и просто вы можете переименовать переменную в pegawais
, и эта ошибка будет устранена. но в индексной функции вы использовали разбивку на страницы и использовали ее и в блейде. в поиске вы не разбиваетесь на страницы и не используете get()
их . таким образом, вы получите сообщение об ошибке типа links()
«не существует». здесь вы также должны использовать разбивку на страницы.
public function search(Request $request)
{
$q = $request->input('search');
$pegawais = Pegawai::where('nama_pegawai', 'LIKE', '%'.$q.'%')
->orWhere('alamat', 'LIKE', '%'.$q.'%')
->paginate(5);
return view('pegawai.index')->with('pegawais', $pegawais)->with('query', $q);
}
и я полагаю, что поиск, который вы используете, находится в индексном блоке. в этой форме ваше входное имя q
указано только в контроллере, который вы ищете search
. вы всегда будете получать значение null. измените имя ввода.
<input class="form-control form-control-navbar" type="search" placeholder="Search" aria-label="Search" name="search">
Комментарии:
1. Спасибо, сэр, я искренне благодарю вас от всего сердца.
Ответ №2:
Попробуйте что-то вроде этого:
return view('pegawai.index')->with('pegawais', $pegawais);