【问题标题】:How to properly structure this multi step form?如何正确构建这个多步骤表单?
【发布时间】:2018-07-20 13:36:42
【问题描述】:

我有一个页面 create_conference.blade.php 来创建新的会议。在此页面中有一个多步骤表单:

  • 第一步询问用户大会信息
  • 在第 2 部分中要求对会议创建者进行描述
  • 在第 3 次向用户询问会议的注册类型

表单的工作方式是:用户输入第一步的信息,然后单击“转到第 2 步”,然后在第 2 步中,用户输入第 2 步的特定信息并单击“转到第 3 步” .最后,在第 3 步,用户输入第 3 步的具体信息,然后点击“存储”提交信息,会议就创建好了。

你知道如何用 laravel 正确处理这个多步骤的表单逻辑吗?我没有成功构建这个。

HTML:

<!-- So, the page has 3 step: General Info, Conference Creator Info and Registration Types) -->
    @extends('app')
    @section('content')
            <div class="container nopadding py-4">
                <h1 class="h5 text-center">Create Conference</h1>
                <div class="row">
                    <div class="col-12">
                            <ul class="nav nav-pills registration_form_list" role="tablist">
                                <li class="">
                                    <a class="nav-link active" href="#step1" data-toggle="tab" role="tab">
                                        Step1<br><small>General Information</small></a>
                                </li>
                                <li class="disabled">
                                    <a class="nav-link" href="#step2" data-toggle="tab" role="tab">
                                        Step 2<br><small>Conference Creator Info</small></a>
                                </li>
                                <li class="disabled">
                                    <a class="nav-link" href="#step3" data-toggle="tab" role="tab">
                                        Step 3<br><small>Registration Types</small></a>
                                </li>
                            </ul>

                    <!-- STEP 1 - General Confenrece Information-->

                    <form method="post" class="clearfix" action="conference/store">
                    {{csrc_field()}}
                        <div class="tab-content registration_body bg-white" id="myTabContent">
                            <div class="tab-pane fade show active clearfix" id="step1" role="tabpanel" aria-labelledby="home-tab">
                                <form method="post" class="clearfix">
                                    <div class="form-group">
                                        <label for="conference_name" class="text-heading h6 font-weight-semi-bold">Conference Name </label>
                                        <input type="text" name="conference_name" class="form-control" id="conference_name">
                                    </div>
                                    <div class="form-row">
                                        <div class="form-group col-lg-6">
                                            <label for="conference_categories" class="text-heading h6 font-weight-semi-bold">Conference Categories</label>
                                            <select id="tag_list" name="conference_categories" multiple class="form-control" id="conference_categories">
                                                <option>IT</option>
                                            </select>
                                        </div>
                                    </div>

                                    <div class="form-group">
                                        <label for="address" class="text-heading h6 font-weight-semi-bold">Address</label>
                                            <input type="text" name="conference_address" class="form-control" >
                                    </div>
                                    <div>

                                        <button type="button" href="#step2" data-toggle="tab" role="tab"
                                                class="btn mr-2 btn-primary btn next-step">
                                            Go To Step 2
                                        </button>
                                    </div>
                                </form>
                            </div>

                    <!-- STEP 2 - Conference creator Information-->

                            <div class="tab-pane fade clearfix" id="step2" role="tabpanel" aria-labelledby="profile-tab">
                                <form method="post" class="clearfix">
                                    <div class="form-row">
                                    <div class="form-group">
                                        <label for="conference_creator_description" class="text-heading h6 font-weight-semi-bold">Description</label>
                                        <textarea name="conference_creator_description" id="conference_creator_description" class="form-control" rows="3"></textarea>
                                    </div>

                                       <button type="button" href="#step1" data-toggle="tab" role="tab"
                                                class="btn mr-2 btn-primary btn next-step">
                                            Go Back To Step 1
                                        </button>
                                       <button type="button" href="#step3" data-toggle="tab" role="tab"
                                                class="btn mr-2 btn-primary btn next-step">
                                            Go To Step 3
                                        </button>
                                </form>
                            </div>

                    <!-- STEP 3 - Registration Types-->

                            <div class="tab-pane clearfix fade" id="step3" role="tabpanel" aria-labelledby="contact-tab">
                                <form method="post" class="clearfix">
                                    <div class="form-group">
                                        <label for="registration_type_name" class="text-heading h6 font-weight-semi-bold">Registration Type Name</label>
                                        <input type="text" name="registration_type_name" class="form-control" id="registration_type_name">
                                    </div>

                                    <div class="form-group col-md-6">
                                        <label for="registration_type_capacity" class="text-heading h6 font-weight-semi-bold">Capacity</label>
                                        <input type="text" class="form-control" name="registration_type_name" id="registration_type_capacity">
                                    </div>
                                      <div class="form-group">

                                             <button type="button" href="#step2" data-toggle="tab" role="tab"
                                                class="btn mr-2 btn-primary btn next-step">
                                            Go Back To Step 2
                                        </button>
                                       <button type="submit"  data-toggle="tab" role="tab"
                                                class="btn mr-2 btn-primary btn next-step">
                                            Store
                                        </button>
                                    </div>
                                </form>
                            </div>        
                        </div>
                    </form>
                </div>
            </div>
        </div>

Laravel:

  • 我创建了一个 ConferenceController
  • 然后在表单中添加一个动作 (action="conference/store")
  • 然后我也创建了一条路线:

    Route::post('/createConference, [ ‘使用’ => ‘ConferenceController@store’ 'as' => Conference.store' ]

但是当我输入一些信息并提交表单时,它会出现:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message.   

【问题讨论】:

    标签: php html forms laravel


    【解决方案1】:

    错误的操作网址

    Route::post(‘/createConference,[‘uses’=>‘ConferenceController@store’,‘as’=>conference.store’]);
    

    将表单的动作设置为路由名称并添加crsf字段

    <form action="{{route('conference.store')}}" method="post">
    {{ csrf_field() }}
    

    【讨论】:

    • 谢谢,但是当页面“proj.test/createConference”被访问而不是出现页面布局时,它只显示为“[]”。你知道为什么吗?
    • 搜索路线,在某些情况下您解决了这条路线但没有定义路线本身
    • 我很乐意提供帮助
    • 路由上带有“->name('conference.store')”总是出现错误“Route [conference.store] not defined”。如果删除此“->name('conference.store')”并插入表单的某些输入并提交表单,则会出现一个页面,显示“该页面由于不活动而过期。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    相关资源
    最近更新 更多