Неопределенная переменная: ошибки в laravel foreach - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь извлечь данные из базы данных в мой Laravel CRUD, но в моем представлении отображается неопределенная переменная.

Вот вид frame.blade.php

@foreach($mahasiswa as $mhs)
   <tr>
       <td>{{$mhs->id}}</td>
       <td>{{$mhs->nim}}</td>
       <td>{{$mhs->nama}}</td>
       <td>{{$mhs->alamat}}</td>
       <td>{{$mhs->fakultas}}</td>
       <td><a onclick="event.preventDefault();editmhsForm({{$mhs->id}});" href="#" class="edit open-modal" data-toggle="modal" value="{{$mhs->id}}"><i class="material-icons" data-toggle="tooltip" title="Edit">&#xE254;</i></a>
           <a onclick="event.preventDefault();deletemhsForm({{$mhs->id}});" href="#" class="delete" data-toggle="modal"><i class="material-icons" data-toggle="tooltip" title="Delete">&#xE872;</i></a>
       </td>
       </tr>
@endforeach

Вот контроллер

use App\Dashboard;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class DashboardController extends Controller
{

public function index(Request $request)
{
    $mhs = Dashboard::orderBy('id', 'desc')->paginate(5);

    return view('frame')->with('frame', $mhs);
}

А вот и маршрут

Route::group(['prefix' => 'mahasiswa'], function () {
    Route::get('/dashboard/{id}', [
        'uses' => 'DashboardController@show',
        'as'   => 'mahasiswa.show',
    ]);

    Route::post('/dashboard/', [
        'uses' => 'DashboardController@store',
        'as'   => 'mahasiswa.store',
    ]);

    Route::put('/dashboard/{id}', [
        'uses' => 'DashboardController@update',
        'as'   => 'mahasiswa.update',
    ]);

    Route::delete('/dashboard/{id}', [
        'uses' => 'DashboardController@destroy',
        'as'   => 'mahasiswa.destroy',
    ]);
});

Я продолжаю получать сообщение "Неопределенная переменная: mahasiswa"

Кто-нибудь знает причину этого?

Ответы [ 3 ]

1 голос
/ 26 июня 2019

Попробуйте так:

Сначала в контроллере присвойте результаты запроса к БД $ mahasiswa :

use App\Dashboard;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class DashboardController extends Controller
{

public function index(Request $request)
{
    $mahasiswa = Dashboard::orderBy('id', 'desc')->paginate(5);

    return view('frame', compact('mahasiswa'));
}

Тогда в поле зрения:

@foreach($mahasiswa as $mhs)
   <tr>
       <td>{{$mhs->id}}</td>
       <td>{{$mhs->nim}}</td>
       <td>{{$mhs->nama}}</td>
       <td>{{$mhs->alamat}}</td>
       <td>{{$mhs->fakultas}}</td>
       <td><a onclick="event.preventDefault();editmhsForm({{$mhs->id}});" href="#" class="edit open-modal" data-toggle="modal" value="{{$mhs->id}}"><i class="material-icons" data-toggle="tooltip" title="Edit">&#xE254;</i></a>
           <a onclick="event.preventDefault();deletemhsForm({{$mhs->id}});" href="#" class="delete" data-toggle="modal"><i class="material-icons" data-toggle="tooltip" title="Delete">&#xE872;</i></a>
       </td>
   </tr>
@endforeach

Это избавит от этой ошибки.

Я использовал обратный просмотр ('frame', compact ('mahasiswa')); т.е. compact вместо с . Я думаю, что это намного чище и менее запутанно для начинающих.

1 голос
/ 26 июня 2019

все еще может работать следующим образом:

use App\Dashboard;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class DashboardController extends Controller
{

public function index(Request $request)
{
    $data['mahasiswa'] = Dashboard::orderBy('id', 'desc')->paginate(5);

    return view('frame',$data);
}

вид

@foreach($mahasiswa as $mhs)
   <tr>
       <td>{{$mhs->id}}</td>
       <td>{{$mhs->nim}}</td>
       <td>{{$mhs->nama}}</td>
       <td>{{$mhs->alamat}}</td>
       <td>{{$mhs->fakultas}}</td>
       <td><a onclick="event.preventDefault();editmhsForm({{$mhs->id}});" href="#" class="edit open-modal" data-toggle="modal" value="{{$mhs->id}}"><i class="material-icons" data-toggle="tooltip" title="Edit">&#xE254;</i></a>
           <a onclick="event.preventDefault();deletemhsForm({{$mhs->id}});" href="#" class="delete" data-toggle="modal"><i class="material-icons" data-toggle="tooltip" title="Delete">&#xE872;</i></a>
       </td>
       </tr>
@endforeach
1 голос
/ 26 июня 2019

Вы передаете данные с именем frame и пытаетесь выполнить итерацию по $mahasiswa, поэтому измените свой блейд на:

@foreach($frame as $mhs)
   <tr>
       <td>{{$mhs->id}}</td>
       <td>{{$mhs->nim}}</td>
       <td>{{$mhs->nama}}</td>
       <td>{{$mhs->alamat}}</td>
       <td>{{$mhs->fakultas}}</td>
       <td><a onclick="event.preventDefault();editmhsForm({{$mhs->id}});" href="#" class="edit open-modal" data-toggle="modal" value="{{$mhs->id}}"><i class="material-icons" data-toggle="tooltip" title="Edit">&#xE254;</i></a>
           <a onclick="event.preventDefault();deletemhsForm({{$mhs->id}});" href="#" class="delete" data-toggle="modal"><i class="material-icons" data-toggle="tooltip" title="Delete">&#xE872;</i></a>
       </td>
       </tr>
@endforeach

или в своем контроллере:

public function index(Request $request)
{
    $mhs = Dashboard::orderBy('id', 'desc')->paginate(5);

    return view('frame')->with('mahasiswa', $mhs);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...