【问题标题】:404 not found in laravel在 laravel 中找不到 404
【发布时间】:2019-12-02 22:56:20
【问题描述】:

您好,我试图在 show.blade.php 上显示数据,但它说 404|not found m using resource route for it。请记住我在教师索引上显示学生,然后我想将其重定向到 student/show.blade.php

学生控制器:

  public function show(Student $student)
  {
      $data = Student::findOrFail($student->id);
      return view('student.show', compact('data'));
  }

教师刀片文件:

         <td>
            @foreach($row->student as $st)
          <a href="{{ route('student.show', $row->id) }}">
             {{ $st->student_name }}</a>
            @endforeach
          </td>

【问题讨论】:

  • 运行 php artisan route:list ,查看student.show是否存在路由名称
  • 是的,GET|HEAD |学生/{学生} |学生秀 | App\Http\Controllers\StudentController@show
  • 你为什么要做Student::findOrFail()?如果您在$student 中执行function show(Student $student),则您拥有学生模型
  • 如果 Student 模型不存在 laravel 返回 404。
  • 在你的函数中,$data = Student::findOrFail($student-&gt;id); 之后,dd($data); 返回什么?

标签: laravel eloquent laravel-5.8


【解决方案1】:

您将 id 传递给您的控制器而不是模型,因此更正在这里

 public function show($student)
 {
  $data = Student::findOrFail($student);
  return view('student.show', compact('data'));
  }

同时修正刀片上的这部分

<a href="{{ route('student.show', $st->id) }}">

您收到错误未找到,因为 $student->id 正在返回 null,因为您发送了不正确的循环部分,因此您收到错误 404

【讨论】:

  • 语法错误,意外 ')',在这一行期望变量 public function show(Student)
  • 不是Student而是$student作为show里面的参数,复制我的代码试试
  • 还是同样的问题
  • 试图获取非对象的属性'student_name'(查看:D:\xampp\htdocs\laravel\many\resources\views\student\show.blade.php)
  • 它已经连接到show.blade,现在问题出在show.blade.php,你需要了解collection和array有什么区别,祝你好运! ,您将变量作为 $data 传递给 show.blade.php,确保您在没有 foreach 和直接 $data->student_name 的情况下调用
【解决方案2】:

我不知道你通往学生的路线,但如果你有这样的路线:

Route::get('students/{id}', 'StudentController@show')->name('student.show');

您从

传递的学生集合的数组名称是什么

TeacherContoller? $数据?

如果是这样,您的刀片文件“teacher.blade.php”将是这样的:

<td>
  @foreach($data as $row)
  <a href="{{ route('student.show', ['id' => $row->id]) }}">
    {{ $row->student_name }}</a>
  @endforeach
 </td>

然后,您可以将方法更改为:

/**
 * @var int $id
 */
public function show(int $id)
{
   $data = Student::findOrFail($id);

   return view('student.show', compact('data'));
}

【讨论】:

  • 类 App\Http\Controllers\Integer 不存在
  • 对不起!!将其更改为“int”,如下所示: public function show(int $id)
猜你喜欢
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 2020-01-30
  • 1970-01-01
  • 2021-09-09
相关资源
最近更新 更多