Передача логического значения из флажка в форме Laravel 5.8 - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь сохранить логическое значение при создании нового сообщения и затем обновить его, если я обновляю сообщение.Когда я создаю новую публикацию и сохраняю ее, она сохраняется в базе данных, и я даже могу обновить ее без проблем.У меня просто небольшая проблема с булевым флажком.Это мой первый проект в 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 ]

4 голосов
/ 06 мая 2019

Вам не очень понятно, в чем именно проблема, но вы можете привести атрибут в качестве логического значения в модели.

<?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');
0 голосов
/ 06 мая 2019

попробуйте $post->is_featured = $request->input('is_featured') ? true : false;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...