Неопределенная переменная в функции поиска laravel 5.8

#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);