【问题标题】:Laravel form not submittingLaravel 表单未提交
【发布时间】:2018-05-10 04:43:38
【问题描述】:

作为 youtube 上博客教程的一部分,我一直在 Laravel 中制作表单:https://www.youtube.com/watch?v=kmCtXryFwDc。我正在使用 Laravel 5.3 和 Firefox。我创建了一个表单,该表单应该提交更新,该更新将更新博客站点上的帖子。当我单击提交按钮时,我的浏览器中没有任何反应。如果我的提交按钮只应用了 css 而没有其他属性或锚标记,它的行为没有什么不同。

我是否在这里忘记了一些简单的事情,或者我刚刚切换到的新版本的 Firefox 有什么奇怪的地方?

posts/update.blade.php:

@extends('main')

@section('title', '| Edit Post')

@section('stylesheets')

    <link href="{{ secure_asset('css/parsley.css') }}" rel="stylesheet">

@endsection

@section('content')

<div class="form" method="POST" action="{{ route('posts.update', $post->id) }}">
    <div class="row">
        <div class="col-12 col-md-8">
            <input type="text" class="form-control" name="title" value="{{ $post->title }}"/>
            <hr>
            <textarea class="form-control" name="body" rows="10">{{ $post->body }}</textarea>
        </div>

        <div class="col-12 col-md-4">
            <div class="card border-light text-center">
                <div class="card-header"><strong>Post Info</strong></div>
                <div class="card-body">

                    <dl class="row end">
                        <dt class="col-4">Created:</dt>
                        <dd class="col-8">{{ date('M j, Y g:i', strtotime($post->created_at)) }}</dd>

                        <dt class="col-4">Updated:</dt>
                        <dd class="col-8">{{ date('M j, Y g:i', strtotime($post->updated_at)) }}</dd>
                    </dl>

                    <hr>

                    <div class="row">
                        <div class="col-12 col-sm-6">
                            <button type="submit" class="btn btn-success btn-block">Update</button>
                        </div>
                        <div class="col-12 col-sm-6">
                            <a href="{{ route('posts.destroy', $post->id) }}" class="btn btn-info btn-block">Cancel</a>
                        </div>

                        {{ Form::token() }}
                        {{ method_field('PUT') }}  <!-- generates hidden field that sets the form method to PUT because HTML5 doesn't support it -->
                    </div>

                </div>

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

@stop

@section('scripts')

    <script src="{{ secure_asset('js/parsley.min.js') }}"></script>

@stop

【问题讨论】:

    标签: php forms laravel


    【解决方案1】:

    您的代码中缺少表单标签,请查看

    <div class="form" method="POST" action="{{ route('posts.update', $post->id) }}">
    

    <form class="form" method="POST" action="{{ route('posts.update', $post->id) }}">
    

    同时关闭表单标签。

    你也可以使用

    {{ Form::open(array('url' => 'foo/bar')) }}
    //
    {{ Form::close() }}
    

    【讨论】:

      【解决方案2】:
      <div class="form" method="POST" action="{{ route('posts.update', $post->id) }}">
      

      如下修改

      <form class="form" method="PUT" action="{{ route('posts.update', $post->id) }}">
      

      如果这是一个表格,必须以表格标签开始。

      同样在 laravel 框架中,你可以使用 laravel 集合形式。这里是docs

      【讨论】:

        猜你喜欢
        • 2014-08-07
        • 2018-04-09
        • 2020-10-25
        • 2018-06-22
        • 2021-09-05
        • 2014-12-02
        • 1970-01-01
        • 1970-01-01
        • 2020-02-25
        相关资源
        最近更新 更多