【问题标题】:submit form can not access method in controller提交表单无法访问控制器中的方法
【发布时间】:2017-06-11 02:21:22
【问题描述】:

当我在视图中提交表单时,我无法在控制器中访问它。

查看 create.blade.php

@extends('layouts.app')


@section('content')



    <form method="POST" action="posts">

        <input type="text" name="title" placeholder="Enter title">
        <input type="submit" name="submit">
        </form>

控制器后控制器

public function store(Request $request)
{
    return $request->all();
}

我想在 store 方法中的PostController 中访问表单数据,一旦我点击提交,它就没有给出结果。

我有路线:Route::resource('posts', 'PostController'),并且我以action="posts" 的身份发布到此路线/网址。在Route 我用过资源,在method="post"

这有关系吗?我能做什么?

【问题讨论】:

  • {{ csrf_field() }} 放在打开表单标签之后(... action="posts"&gt; 之后。并确保您发布到正确的网址。
  • 在php artisan route:list中,用来存储方法的uri是:posts。这就是我写 action="posts" 的原因。但我无法做到这一点......
  • 我有路由:Route::resource('posts', 'PostController')。我正在发布到这条路线/网址,作为 action="posts"。在路线中,我使用了资源,并且在 method="post"...... 这有关系吗??????我能做什么???

标签: laravel laravel-5 laravel-5.3


【解决方案1】:

看起来你错过了动作

Route::post('post', 'PostController@store');

【讨论】:

  • 他正在使用资源丰富的路由 Route::resource('posts', 'PostController')
【解决方案2】:

我不确定,但可能是因为url 而不包括csrf_field()。尝试将其更改为:

<form method="POST" action="{{ url('posts') }}">
    {{ csrf_field() }}

    <input type="text" name="title" placeholder="Enter title">
    <input type="submit" name="submit">
</form>

或者您可以使用route('posts.store ') 而不是url('posts')

【讨论】:

    猜你喜欢
    • 2014-04-12
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多