Laravel 4自动插入

时间:2014-04-21 00:17:48

标签: forms laravel

我最近更新了Laravel 4.1,并且退出的模态窗口窗体无法正常工作。我已经发现,在Laravel 4.1更新之后出于某种原因,Laravel会自动将标签插入到我的模态体中。 (我在页脚中有Form :: close()。我很好奇是否有其他人看过这个或者可以解释为什么会发生这种情况以及如何防止它。我很擅长搜索我的问题,但是这个没有让我得到任何结果。

请注意,如果我将提交按钮移动到模态体div中,则提交按预期工作,更新将通过正常过程..但由于某些原因,使用此特定模式,在页脚中设置提交按钮在窗体外部提交按钮,因为窗体关闭是在模态体div结束之前自动插入的。同样奇怪的是,我在另一个页面上工作,一切都按预期工作。

以下是相关代码:

<div class="modal-body">

            <?php
                $access = Session::get('user_access'); 
                $userid = Session::get('user_id');
            ?>

            {{ Form::open(array('method'=>'POST','route' => 'users.store', 'style' => 'display:inline')) }}

            @foreach($user as $userinfo)

                <!-- Set hidden form element with userid embedded -->
                <input type="hidden" name='id' id='id' value={{ $userid }}>


                <!-- Display the username and profile Picture -->
                <h2><center>{{ $userinfo->username }}</center></h2>
                <br><br>

                <!-- 2 Column Form to change user information and display current status -->
                <div class ='container col-md-offset-1'>
                    <div class='row col-md-3'>
                        <div>
                            {{ Form::label('givenname', 'First Name:') }} <br>
                            <input type="text" name='givenname' id='givenname' value={{ $userinfo->givenname }}>
                        </div><br />

                        <div>
                            {{ Form::label('surname', 'Last Name:') }} <br>
                            <input type="text" name='surname' id='surname' value={{ $userinfo->surname }}>
                        </div><br />


                        <div>
                            {{ Form::label('email', 'Email Address:') }} <br>
                            <input type="text" name='email' id='email' value={{ $userinfo->email }}>
                        </div><br />
                    </div>

                    <div class='row col-md-3'>
                        <div>
                            {{ Form::label('password', 'New Password:') }} <br>
                            <input type="password" name='password' id='password' value={{ $userinfo->password }}>
                        </div><br />

                        <div>
                            {{ Form::label('password_confirmation', 'Confirm New Password:') }} <br>
                            <input type="password" name='password_confirmation' id='password_confirmation' value={{ $userinfo->password }}>
                        </div><br />

                        <div>
                            {{ Form::label('useraccess', 'Current Subscription Status:') }} <br>
                            {{ $access }}
                        </div><br />

                    </div>
                </div>
            @endforeach
            </div> <!-- End Modal Body -->

            <div class="modal-footer">
                {{ Form::submit('Save', array('class' => ' btn btn-warning')) }}           
                <!-- Close the form -->
                {{ Form::close() }}
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>

当我在浏览器中运行开发人员工具时,我可以看到自动插入

<form method="POST" action="http://dev.app.myapp.com/users" accept-charset="UTF-8"><input name="_token" type="hidden" value="<TOKEN">

                <!-- Set hidden form element with userid embedded -->
                <input type="hidden" name="id" id="id" value="6">


                <!-- Display the username and profile Picture -->
                <h2><center>johndoe123</center></h2>
                <br><br>

                <!-- 2 Column Form to change user information and display current status -->
                <div class="container col-md-offset-1">
                    <div class="row col-md-3">
                        <div>
                            <label for="givenname">First Name:</label> <br>
                            <input type="text" name="givenname" id="givenname" value="John">
                        </div><br>

                        <div>
                            <label for="surname">Last Name:</label> <br>
                            <input type="text" name="surname" id="surname" value="Doe">
                        </div><br>


                        <div>
                            <label for="email">Email Address:</label> <br>
                            <input type="text" name="email" id="email" value="johndoe@notarealemail.com">
                        </div><br>
                    </div>

                    <div class="row col-md-3">
                        <div>
                            <label for="password">New Password:</label> <br>
                            <input type="password" name="password" id="password" value="Encrypted Password String">
                        </div><br>

                        <div>
                            <label for="password_confirmation">Confirm New Password:</label> <br>
                            <input type="password" name="password_confirmation" id="password_confirmation" value="Encrypted Password String">
                        </div><br>

                        <div>
                            <label for="useraccess">Current Subscription Status:</label> <br>
                            User                            </div><br>

                    </div>
                </div>
                            </form>

<div class="modal-footer">
            <input class=" btn btn-success" type="submit" value="Save">           
            <!-- Close the form -->
                            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>

1 个答案:

答案 0 :(得分:0)

原因是你的加价缺乏适当的结构。你在某个元素中开始<form>,然后在另一个元素中关闭它。

查看页面来源(Mac上为ALT+CMD+U)。您会注意到</form>与您最初放置的位置Form::close()<div class="modal-footer">内)。

然而,正如我之前提到的那样,这个位置是无效的加价。浏览器并不确切地知道你想要什么,但它会尝试得出结论,所以它正确地将</form>向下移动了一个级别。

您在开发者工具中看到的不是Laravel打印出来的内容,而是浏览器解释无效标记的方式。

此特定案例的解决方案:在Form::close()之后移动<div class="modal-footer">