Данные не передаются - PullRequest
0 голосов
/ 09 февраля 2020

Когда я нажимаю кнопку отправки в моей форме, она просто перезагружает страницу с теми же данными в окне исповеди. Данные формы не обрабатываются. Когда пользователь публикует признание, он должен получить доступ к методу store моего контроллера posts. Затем я хочу увидеть признание в профиле пользователя.

Что-то не так с моей формой?

это моя таблица базы данных:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('user_id');
            $table->text('confession');

            $table->timestamps();

            $table->index('user_id');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

Модель моего поста:


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
  protected $gaurded = [];
  //protected $gaurded = [];

    public function user()
    {
      return $this->belongsTo(User::class);
    }
}

Мои сообщенияКонтроллер:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\post;

class PostsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('posts.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
      //validation of data
      $this->validate($request, array(
        'confession' => 'required',
      ));

      //store the data
      $post = new Post;
      $post->confession = $request->confession;
      $post->save();

      //Redirecting to the page
      return redirect()->route('posts.show', $post->id);

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Это мой взгляд :

@extends('layouts.app')

@section('content')
<div class="row">

  <div class="col-md-8 col-md-offset-2">
    <h2> Your Confession</h2>

    {!! Form::open(['route' => 'posts.store']) !!}

        {{Form::label('confession', 'confession')}}
        {{Form::textarea('comfession', null, array('class' => 'form-control'))}}

        {{Form::submit('Say It', array('class' => 'btn btn-success btn-lg btn-block'))}}

    {!! Form::close() !!}

  </div>
</div>

@endsection

1 Ответ

0 голосов
/ 10 февраля 2020

Как я уже сказал в комментарии выше, первая проблема - опечатка в слове "comfession".

Но есть другая проблема. При именовании в laravel модель имеет правила по умолчанию, такие как «должно быть во множественном числе» и др.
Если вы хотите нарушить эти правила и задать собственное имя, используйте эту строку в вашей модели:

protectd $table='YourModelName';

Я надеюсь, что это решение работает и решает все.

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