【问题标题】:Post form data in laravel在 laravel 中发布表单数据
【发布时间】:2017-11-23 14:40:30
【问题描述】:

我刚刚在 larvel 中创建了一个新项目,我试图在 db 中提交表单,但它没有在 db 中保存数据。 这是我的表格

   <form id="" method="post" class="form-horizontal" action="{{ route('updateadminprofile')}}"enctype="multipart/form-data" >


@if (Session::has('success'))
    <div class="alert alert-success" role="alert" style="font-size: 18px;">
        <strong>Success: </strong>

        {{ Session::get('success') }}
    </div>
@endif
<div class="form-group">
    <label class="col-sm-4 control-label" for="userName"> Name</label>
    <div class="col-sm-5">
        <input type="text" class="form-control" id="name" name="name" placeholder="name}"  value="name" />
    </div>
</div>
<div class="form-group">
    <label class="col-sm-4 control-label" for="userName"> Description</label>
    <div class="col-sm-5">
        <input type="text" class="form-control" id="description" name="description" placeholder="Description}"  value="description" />
    </div>
</div>
<button  style="margin-left: 30%" type="submit" class="btn btn-primary" name="signup" value="sumbmit" >Save</button>

我的路线是

Route::group(['namespace' => 'PrivatePages'], function () {
        Route::any('/updateadminprofile', ['as' => 'updateadminprofile', 
        'uses' => 'ProductController@UpdateAdminProfile']);

});

这是我的控制器功能

      public function UpdateAdminProfile(CreateProductRequest $request)
{
     $saveproduct = new Product();

    $saveproduct->name = $request->name;
    $saveproduct->description = $request->description;

    $saveproduct->save();
}

它没有在数据库中保存记录。当我尝试提交表单时,它会给我下面的文字,

 The page has expired due to inactivity. 

 Please refresh and try again.

当我在表单中添加 csrf 时,它甚至不会路由表单操作中指定的路由

【问题讨论】:

  • 试试这个,将表单中的 action="{{ route('updateadminprofile')}}" 更改为 action='ProductController@UpdateAdminProfile' 让我们看看它是否有效。
  • csrf 字段应该被发送回服务器。你是怎么添加的?在表单标签中使用 {{ csrf_field() }}。
  • {{ csrf_field() }}

标签: php forms laravel


【解决方案1】:

试试这个,您可能缺少表单中的 CSRF 字段。还要将 Flash 消息保留在您的表单之外。

@if (Session::has('success'))
<div class="alert alert-success" role="alert" style="font-size: 18px;">
    <strong>Success: </strong>

    {{ Session::get('success') }}
</div>
@endif

<form id="form" method="post" class="form-horizontal" action="/updateadminprofile">

{{ csrf_field() }}

<div class="form-group">
    <label class="col-sm-4 control-label" for="name"> Name</label>
    <div class="col-sm-5">
        <input type="text" class="form-control" id="name" name="name" placeholder="name"  value="name" />
    </div>
</div>
<div class="form-group">
    <label class="col-sm-4 control-label" for="description"> Description</label>
    <div class="col-sm-5">
        <input type="text" class="form-control" id="description" name="description" placeholder="Description}"  value="description" />
    </div>
</div>
<button style="margin-left: 30%" type="submit" class="btn btn-primary" name="signup" value="submit">Save</button>
</form>

编辑:清理了一些小的 HTML 错误并直接指定了路由而不是刀片函数。你能试试这个吗?

【讨论】:

  • 我添加了 csrf 保护,但它现在甚至不去表单操作方法中指定的路由
  • 添加csrf字段后刷新同一个表单
  • 你能再试试我的答案吗?我编辑了一些内容并硬编码了要发布到的 URL。
  • 不,它不工作。它只是刷新页面。不会在表单操作中指定路由
  • 我认为这是问题
【解决方案2】:

我通过在 CreateProductRequest 和 ProductController 中添加以下命名空间解决了这个问题 在 Create CreateProductRequest 中更新了以下几行。

    use  Illuminate\Support\Facades\Request;
    class CreateProductRequest extends Request{}

在产品控制器中,我使用以下命名空间 .

 use App\Http\Requests\CreateProductRequest;

感谢大家的时间和帮助

【讨论】:

    猜你喜欢
    • 2014-08-27
    • 1970-01-01
    • 2014-04-27
    • 2018-10-08
    • 2013-12-18
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多