首页 > 解决方案 > ReflectionException (-1) 类 App\Http\Controllers\AnswersController 不存在

问题描述

我想使用表单将数据保存在数据库中

我尝试使用带有输入文本、收音机...和控制器的表单通过 post 方法将数据保存在数据库中

控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Auth;
use App\Survey;
use App\Answer;
use App\Http\Requests;

class Answerscontroller extends Controller
{
    public function store(Request $request, Survey $survey)
    {
        $request->validate([
            'answer'=>'required'
          ]);
          $answers = new Answer([
            'answer' => $request->get('answer'),
            'commentaire' => $request->get('commentaire'),
            'user_id' => auth()->id(),
            'last_ip' => request()->ip(),
            'survey_id' => $survey->id
          ]);
          $answers->save();
          return redirect('/survey')->with('success', 'Stock has been added');
    }
}

看法:

{!! Form::open(array('action'=>array('AnswersController@store', $survey->id))) !!}
          @forelse ($survey->questions as $key=>$question)
            <p class="flow-text">Question {{ $key+1 }} - {{ $question->title }}</p>
                @if($question->question_type === 'text')
                <div class="form-group">
                  <div class="input-field col s12">
                    <input id="answer" type="text" name="{{ $question->id }}[answer]">
                    <label for="answer">Answer</label>
                  </div> 
                </div>
                @elseif($question->question_type === 'textarea')
                <div class="form-group">
                  <div class="input-field col s12">
                    <textarea id="textarea1" class="materialize-textarea" name="{{ $question->id }}[answer]"></textarea>
                    <label for="textarea1">Textarea</label>
                  </div>
                </div>
                @elseif($question->question_type === 'radio')
                  @foreach($question->option_name as $key=>$value)
                    <p style="margin:0px; padding:0px;">
                      @if($value === 'else')
                      <div class="form-group" style="margin-left: 20px;">
                        <input name="answer" class="custom-control-input" type="radio" id="{{ $value }}" value="{{$value}}"/>
                        <label class="custom-control-label" for="{{ $value }}">{{ $value }}</label>
                        <div id="textboxes" style="display: none">
                            <br>
                            <textarea class="form-control" name="commentaire" id="exampleFormControlTextarea1" rows="3" placeholder="Write a large text here ..."></textarea>
                        </div>
                      </div>
                        @else
                      <p style="margin:0px; padding:0px;">
                        <div class="form-group" style="margin-left: 20px;">
                        <input name="answer" class="custom-control-input" type="radio" id="{{ $value }}" value="{{ $value}}"/>
                        <label class="custom-control-label" for="{{ $value }}">{{ $value }}</label>
                        </div>
                    </p>
                        @endif
                  @endforeach
                @elseif($question->question_type === 'checkbox')
                  @foreach($question->option_name as $key=>$value)
                  <p style="margin:0px; padding:0px;">
                      <div class="form-group">
                      <input type="checkbox" id="{{ $value }}" name="answer" value="{{$value}}"/>
                      <label for="{{$value}}">{{ $value }}</label>
                      </div>
                  </p>
                  @endforeach
                @endif 
              <div class="divider" style="margin:10px 10px;"></div>
          @empty
            <span class='flow-text center-align'>Nothing to show</span>
            @endempty
          <div class="form-group">
        {{ Form::submit('Submit Survey', array('class'=>'btn btn-success mt-4')) }}
          </div>
        {!! Form::close() !!}

模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
class Answer extends Model
{
    protected $fillable = ['answer','commentaire','user_id','survey_id','last_ip'];
    protected $table = 'Answer';

    public function survey() {
      return $this->belongsTo(\App\Survey::class);
    }

    public function question() {
      return $this->belongsTo(\App\Question::class);
    }
    public function user() {
      return $this->belongsTo('App\User');
 }
}

错误:

ReflectionException (-1) 类 App\Http\Controllers\AnswersController 不存在

请你帮我修复那个ps:在路由器中,我把post方法和控制器

标签: laravelformsstore

解决方案


问题在于命名。你的控制器Answerscontroller不过是 Laravel Looks fo AnswersControllerwith capital C。所以,检查你的控制器名称应该是AnswersController.php和类名(在文件AnswersController.php中)应该是AnswersController


推荐阅读