Laravel:操作 App\Http\Controllers\NotesController@store 未定义

Laravel: Action App\Http\Controllers\NotesController@store not defined

我有一个表格

<form action="{{ action('NotesController@store') }}" method="post">
    //
</form>

操作指向 App\Http\Controllers 目录中 NotesController 控制器中的 store 方法。

NotesController 看起来像这样:

<?php

namespace App\Http\Controllers;

use App\Note;
use Illuminate\Http\Request;

class NotesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        // var_dump($request);
        //
        // $note = new Note();


    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

但是当我尝试呈现显示我的表单的页面时(所以在提交它之前,只是尝试呈现表单本身)我收到以下错误:

Action App\Http\Controllers\NotesController@store not defined. (View: C:\xampp\htdocs\personal_projects\Active\diary_app\resources\views\diary\entry.blade.php)

您需要在 routes/web.php

中为控制器定义网络路由
Route::resource('notes', 'NotesController');

您可以使用 action() 助手为您的路线生成 URL:

<form method="post" action="{{ action('NotesController@store') }}" accept-charset="UTF-8">

您也可以使用 like:

路线中:

Route::post('notes', 
      array('uses'=>'App\Controllers\NotesController@store',
             'as' => 'notes.create'));

在视图中:

{{ Form::open(array('url'=>route('notes.create'))) }}

如果您正在使用 Laravel resourceController,则使用:

Route::resource('notes', 'NotesController');

希望对您有所帮助!

使用这段代码,看看你得到了什么:

routes/web.php

Route::get('create', 'NotesController@Create');
Route::post('create', 'NotesController@Store');

形式:

<form method="POST" action="/create">
    {{ csrf_field() }}
    {{-- START - FORM DATA --}}
    
    {{-- END - FORM DATA --}}
</form>