首页 > 解决方案 > Laravel 在浏览器 url 中添加 post 方法的路径

问题描述

又是我,我的操作网址有误。当我发送数据(使用提交按钮)时,浏览器会进行重定向,但是会添加它在操作中的 url = "";

错误:

http://localhost:8000/exams/1/questions/exams/1/questions

<form action="exams/{{$exams->id}}/questions" method="POST" enctype="multipart/form-data">
    @CSRF
    <input type="hidden" name="exam_id" value="{{$exams->id}}">
    <div class="form-group">
        <label for="description">Descripcion de la pregunta*</label>
        <textarea name="description" type="text"
                  class="form-control" id="description"
                  aria-describedby="descriptionHelp"
                  placeholder="Inserte la pregunta">{{ old('description') }}</textarea>
        <small id="descriptionHelp"
               class="form-text text-muted">Escribe la descripcion de la pregunta.</small>
    </div>
    <div class="form-group">
        <label for="iframe">Video asociado *</label>
        <textarea name="iframe" type="text"
                  class="form-control" id="iframe"
                  aria-describedby="iframeHelp"
                  placeholder="Inserte la URL del video">{{ old('iframe') }}</textarea>
        <small id="iframeHelp" class="form-text text-muted">Inserta la url del video.</small>
    </div>

    <div class="form-group d-flex flex-column">
        <label for="image">Imagen asociada</label>
        <input name="image" type="file" class="py-1">
    </div>
    <hr />
    <button type="submit" class="btn btn-primary">Guardar pregunta</button>
</form>

web.php路由中是这样定义的。

Route::resource('/exams', 'Backend\ExamController');
Route::resource('/exams/{exam}/questions', 'Backend\QuestionController');

我的route:list

|        | GET|HEAD  | exams                                  | exams.index        | App\Http\Controllers\Backend\ExamController@index                      | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | GET|HEAD  | exams/create                           | exams.create       | App\Http\Controllers\Backend\ExamController@create                     | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | GET|HEAD  | exams/{exam}                           | exams.show         | App\Http\Controllers\Backend\ExamController@show                       | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | PUT|PATCH | exams/{exam}                           | exams.update       | App\Http\Controllers\Backend\ExamController@update                     | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | DELETE    | exams/{exam}                           | exams.destroy      | App\Http\Controllers\Backend\ExamController@destroy                    | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | GET|HEAD  | exams/{exam}/edit                      | exams.edit         | App\Http\Controllers\Backend\ExamController@edit                       | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | POST      | exams/{exam}/questions                 | questions.store    | App\Http\Controllers\Backend\QuestionController@store                  | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | GET|HEAD  | exams/{exam}/questions                 | questions.index    | App\Http\Controllers\Backend\QuestionController@index                  | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | GET|HEAD  | exams/{exam}/questions/create          | questions.create   | App\Http\Controllers\Backend\QuestionController@create                 | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | GET|HEAD  | exams/{exam}/questions/{question}      | questions.show     | App\Http\Controllers\Backend\QuestionController@show                   | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | PUT|PATCH | exams/{exam}/questions/{question}      | questions.update   | App\Http\Controllers\Backend\QuestionController@update                 | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | DELETE    | exams/{exam}/questions/{question}      | questions.destroy  | App\Http\Controllers\Backend\QuestionController@destroy                | web        |
|        |           |                                        |                    |                                                                        | auth       |
|        | GET|HEAD  | exams/{exam}/questions/{question}/edit | questions.edit     | App\Http\Controllers\Backend\QuestionController@edit                   | web        |

我的方法商店看起来像这样

public function store(QuestionStoreRequest $request){
    $questions = new Question();
    $questions->description = $request->get('description');
    $questions->iframe = $request->get('iframe');
    $questions->image = $request->get('image');

    $questions->exam_id = $request->get('exam_id');
    $questions->category_id = $request->get('category_id');

    $questions->save();
    return view('question.index');
}

我这样声明是因为,当我在没有通过考试 ID 的情况下这样做时,我收到一条错误消息,提示“此属性不可用”。

标签: laravel

解决方案


我认为您的问题出在已定义的路线上。您必须像这样在您的路线中使用 Post 功能。

Route::resource('/exams', 'Backend\ExamController');
Route::post('/exams/{exam}/questions', 'Backend\QuestionController@store');

推荐阅读