为了账号安全,请及时绑定邮箱和手机立即绑定

从Laravel 5.8表单的复选框传递布尔值

从Laravel 5.8表单的复选框传递布尔值

PHP
RISEBY 2021-05-15 14:12:56
我尝试在创建新的帖子时保存布尔值,然后在更新帖子时让它更新值。当我创建一个新的帖子并保存时,它会持久保存到数据库中,甚至可以更新它而不会出现问题。我在处理复选框布尔值时遇到了一些麻烦。这是我在拉拉韦尔(Laravel)的拳头项目,这是我确定的障碍之一。图式...public function up()    {        Schema::create('posts', function (Blueprint $table) {            $table->increments('id');            $table->unsignedBigInteger('user_id');            $table->string('title');            $table->text('body')->nullable();            $table->string('photo')->nullable();            $table->boolean('is_featured')->nullable()->default(false);            $table->boolean('is_place')->nullable()->default(false);            $table->string('tag')->nullable()->default(false);            $table->timestamps();        });        Schema::table('posts', function (Blueprint $table) {            $table->foreign('user_id')->references('id')->on('users');        });    }...PostController.php...public function store(Request $request)    {        $rules = [            'title' => ['required', 'min:3'],            'body' => ['required', 'min:5']        ];        $request->validate($rules);        $user_id = Auth::id();        $post = new Post();        $post->user_id = $user_id;        $post->is_featured = request('is_featured');        $post->title = request('title');        $post->body = request('body');        $post->save();        $posts = Post::all();        return view('backend.auth.post.index', compact('posts'));    }...post / create.blade.php...<input type="checkbox" name="is_featured" class="switch-input"       value="{{old('is_featured')}}">...
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

您不清楚问题到底是什么,但是您可以在模型中将属性强制转换为布尔值。


<?php


namespace App;


use Illuminate\Database\Eloquent\Model;


class Post extends Model

{

    protected $casts = [

        'is_featured' => 'boolean',

        'is_place' => 'boolean',

    ];

}

然后,在表单中,您将需要检查该值以确定是否已选中该框。


<input type="checkbox" name="is_featured" class="switch-input" value="1" {{ old('is_featured') ? 'checked="checked"' : '' }}/>

在您的控制器中,您只想检查输入是否已提交。未经检查的输入将不会被加总。


$post->is_featured = $request->has('is_featured');


查看完整回答
反对 回复 2021-05-28
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

试试这个 $post->is_featured = $request->input('is_featured') ? true : false;


查看完整回答
反对 回复 2021-05-28
  • 2 回答
  • 0 关注
  • 189 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信