php - LARAVEL 8:ErrorException 未定义索引:私有
问题描述
我正在使用 Laravel 8 开发我的项目,并且我制作了这个表格,以便将一些数据添加到数据库中:
<form class="mb-3" method="POST" action="/ask">
@csrf
<div class="form-group">
<label for="topic" class="BKoodakBold">Question Title</label>
<input name="title" type="text" class="form-control BSinaBold" id="topic" required>
</div>
<div class="form-group">
<label for="topic" class="BKoodakBold">Question Body</label>
<textarea name="body" class="form-control BSinaBold" id="comment" required></textarea>
</div>
<label for="topic" class="BKoodakBold">Question Category</label>
<select class="form-control BSinaBold" name="category" id="category">
@foreach(\App\Models\Category::all() as $category)
<option value="{{ $category->id }}">{{ $category->name }}</option>
@endforeach
</select></br>
<div class="form-check">
<label class="form-check-label BKoodakBold">
<input name="private" type="checkbox" class="form-check-input" id="checkbox" value="on">
private chat
</label>
</div></br>
<button type="submit" class="btn btn-primary BJadidBold">Send</button>
<button type="reset" class="btn btn-danger BJadidBold">Reset</button>
</form>
在控制器中,我添加了以下代码:
public function postForm()
{
$validate_data = Validator::make(request()->all(),[
'title' => 'required',
'body' => 'required',
'private' => 'nullable',
'category' => 'required'
])->validated();
Question::create([
'title' => $validate_data['title'],
'body' => $validate_data['body'],
'private' => $validate_data['private'],
'category' => $validate_data['category']
]);
return redirect()->back();
}
现在的问题是,如果我取消选中该private chat
复选框,我会将此视为错误:
ErrorException 未定义索引:私有
但是,如果我检查它,表单将成功提交。
那么您对此有何想法,我该如何解决这个问题?
移民:
public function up()
{
Schema::create('questions', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->string('category');
$table->string('private');
$table->timestamps();
});
}
解决方案
使用类似的东西:
Arr::get($validate_data, 'private', 0)
或者
$request->input('private', 0)
请注意,使用 Arr::get() 您不需要指定第三个参数,因为它默认为 false。在这种情况下,您应该使用一些具有默认值的助手。我想这也可以:
'private' => $validate_data['private'] ?? false
推荐阅读
- angular - SQLSTATE [22007]:日期时间格式无效:1366 整数值不正确:Laravel 和 Angular 中“myapp”.“employees”.“state_id”列的“null”
- typescript - 如果我想使用一个打字稿组件,我应该将整个项目转换为打字稿吗?反应原生
- javascript - 如何使用 React + Redux 持久化收藏的项目
- python - 使用 Selenium 抓取 JSON 响应
- java - 关于扫描仪方法的问题 - 多个令牌
- python-3.x - 在 for 循环中加速 Keras 顺序模型
- c++ - 我无法让我的代码以 7 的步幅正常工作 C++
- c++ - 为什么即使我的系统有 `/usr/lib/libglfw.so.3` 文件,`ld` 也找不到`glfw3`?
- javascript - 尝试学习 Firebase。我正在关注“了解 Web 版 Firebase”代码实验室,但并没有走得太远
- c++ - 如何将带有捕获和参数的 lambda 传递给 Qt 的连接