php - 404 在 laravel 中没有显示错误,我该如何调试/修复此更新路线?
问题描述
我创建了一个与任务模型有很多关系(许多任务到 1 个项目模型),并设置了一个按钮来说明任务是否已完成(1 或 0)。
当我单击按钮更新数据库时(如视图所示),我收到了这个 404(参见图片)而不是 laravel 通常抛出的通常错误屏幕,检查日志也没有错误。
我附上了 404 附带的代码和网络错误,但我真的不知道我在那里寻找什么,如果有人可以用 404 错误指出我正确的方向,或者下面的代码中有错误,不胜感激!
看法
<form method="POST" action="/tasks/{{ $task->id }}">
@method('PATCH')
@csrf
<label for="completed">
<input type="checkbox" name="completed" onChange="this.form.submit()">
{{ $task->description }}
</label>
</form>
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Task;
class ProjectTasksController extends Controller
{
public function update()
{
dd('foo');
}
}
路线
Route::patch('/tasks/{$task}', 'ProjectTasksController@update');
移民
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTasksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('project_id');
$table->string('description');
$table->boolean('completed')->default(false);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('tasks');
}
}
模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
protected $fillable = [
'project_id', 'description', 'completed'
];
public function project()
{
return $this->belongsTo(Project::class);
}
}
解决方案
删除路线中的 $:'/tasks/{$task}'
路由应该只包含字符串形式的变量名,因为它还没有类型提示到变量中。
推荐阅读
- python - 检查来自对象的值是否具有字符
- java - 从 arrayList 中删除对象并打印出剩余的对象
- javascript - 为什么参数 multi 在 mongo 请求中不起作用?
- jpa - Kotlin JPA 继承建议
- java - 对象构造在实践中是否保证所有线程都看到初始化的非最终字段?
- amazon-web-services - AWS Cloud9 ...很好,但我只能从默认 VPC 中的根账户启动它
- javascript - 使用本地存储来保持侧边栏的位置
- node.js - 使用 Node.js 控制多个 MAX7219
- python - 如何在 Python 中压缩文件而不是文件夹/目录
- python-3.x - 错误:'builtin_function_or_method' 对象不可迭代