العثور على laravel () عند إرجاع خطأ إرجاع ملف شفرة فارغة

0

أحاول تمرير النموذج إلى view.blade عندما لا يكون النموذج فارغًا ، يتم تشغيل ملف الشفرة بدون أخطاء ولكن إذا كان النموذج فارغًا ، فإن أخطاء تشغيل ملف blade هذا هو رمزي

//StudentController code

public function viewstudent($id)
{
   $student = Student::find($id);
   $outputs = array($student);

   return view('student',['students'=>$outputs]);
}


//student.blade.php  code

<table id="myTable">

@foreach ($students as $student)    

<tr>
<td>{{$student->studentname}}</td>
<td>{{$student->studentlevel}}</td>
<td>{{$student->studentgender === 1 ?'Male':'Female'}}</td>
<td>{{$student->studentbirthdate}}</td>
<td>{{$student->studentnotes}}</td>
<td>{{$student->created_at}}</td>
<td>{{$student->updated_at}}</td>

</tr>
@endforeach

</table>

1 إجابة

4
افضل جواب

بالطبع هذا خطأ لأنك تحاول الوصول إلى خصائص على كائن غير. سيكون لديك الصفيف عنصر واحد من null .

هذا تصميم سيء لأنه إذا لم يكن الطالب موجودًا ، فلا يجب أن تعيد العرض لتبدأ. يجب أن تلقي بعض الأخطاء ، ربما HTTP 404.

لحسن الحظ ، يجعل Laravel ذلك سهلاً. يمكنك استخدام Student::findOrFail($id); لإعطاء استثناء عند عدم وجود الطالب.


يبدو من الغريب بالنسبة لي أنك تتصفح الطلاب من وجهة نظرك عندما تقوم وحدة التحكم الخاصة بك بإعادة طالب واحد فقط. إذا كنت لا تريد 404 لسبب ما ، يمكنك دائمًا تشغيل مخرجات $ من خلال array_filter للتخلص من القيمة الخالية ، أو فقط عدم إضافتها إلى مخرجات $ عندما تكون فارغة.

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام