laravel как я могу лучше отобразить список вариантов из вопросов? - PullRequest
0 голосов
/ 02 мая 2020

эй, я хотел бы сохранить вопросы с 4 вариантами и одним правильным ответом и затем отобразить в моей таблице. это 'работает', но в моей таблице всегда отображается ключ от $ correct_options как правильный ответ, и я хотел бы отобразить значение ..

это мой код:

public function create(){
    $categories = Category::pluck('name', 'id')->all();
    $correct_options = [
        'option1' => 'Option #1',
        'option2' => 'Option #2',
        'option3' => 'Option #3',
        'option4' => 'Option #4',
    ];
    return view('admin.questions.create', compact('categories', 'correct_options'));
}

  public function store(QuestionsRequest $request){
    $splitOptions = implode(",", $request->options);
    $arraySplitOptions = preg_split("/,/", $splitOptions);

    foreach ($arraySplitOptions as $key => $value) {
      // my thought was to loop through the array and check if there is a match between the correct answer and the options but couldnt realize it..
    }

    Question::create([
      'question' => $request->question,
      'categories_id' => $request->categories_id,
      'correct_answer' => $request->correct_answer, // here i will get always the key but couldnt find a proper solution 
      'options' => implode( ", ", $request->options)
    ]);
    Session::flash('message', 'Question successfully created.');
    return redirect(route('admin.questions.index'));
}

а это моя форма:

  {!! Form::open(['method' => 'POST', 'action' => 'Admin\AdminQuestionsController@store']) !!}
    @csrf

    <div class="row col-md-12 form-group">
      {!! Form::label('question', 'Question:') !!}
      {!! Form::textarea('question', null, ['class' => 'form-control', 'rows' => 3, 'cols' => 3]) !!}
    </div>

    <div class="row col-md-12 form-group">
      {!! Form::label('options', 'Option 1:') !!}
      {!! Form::text('options[]', null, ['class' => 'form-control']) !!}
    </div>

    <div class="row col-md-12 form-group">
      {!! Form::label('options', 'Option 2:') !!}
      {!! Form::text('options[]', null, ['class' => 'form-control']) !!}
    </div>

    <div class="row col-md-12 form-group">
      {!! Form::label('options', 'Option 3:') !!}
      {!! Form::text('options[]', null, ['class' => 'form-control']) !!}
    </div>

    <div class="row col-md-12 form-group">
      {!! Form::label('options', 'Option 4:') !!}
      {!! Form::text('options[]', null, ['class' => 'form-control']) !!}
    </div>

    <div class="row col-md-12 form-group">
      {!! Form::label('correct_answer', 'Correct Answer:') !!}
      {!! Form::select('correct_answer', array('' => 'Choose One:') + $correct_options, null, ['class' => 'form-control']) !!}
    </div>

    <div class="row col-md-12 form-group">
      {!! Form::label('categories_id', 'Category:') !!}
      {!! Form::select('categories_id', array('' => 'Choose One:') + $categories, null, ['class' => 'form-control']) !!}
    </div>

    <div class="form-group">
      {!! Form::submit('Daten absenden', ['class' => 'btn btn-primary']) !!}
    </div>
  {!! Form::close() !!}

есть идеи? было бы хорошо, спасибо:)


Редактировать: ладно, я решил это ..: D

изменил массив:

    $correct_options = [
        0 => 'Option #1',
        1 => 'Option #2',
        2 => 'Option #3',
        3 => 'Option #4',
    ];

я добавил это к foreach:

    foreach ($arraySplitOptions as $key => $value) {
      if ($request->correct_answer == $key) {
        $request->correct_answer = $value;
      }
    }
...