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

时间:2017-10-25 11:25:10

标签: php laravel laravel-blade laravel-5.5

我有一张表格

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

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

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)
    {
        //
    }
}

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

  

操作App \ Http \ Controllers \ NotesController @ store未定义。 (视图:   C:\ XAMPP \ htdocs中\ personal_projects \主动\ diary_app \资源\视图\日记\ entry.blade.php)

3 个答案:

答案 0 :(得分:3)

您需要在routes/web.php

中定义控制器的Web路由
Route::resource('notes', 'NotesController');

答案 1 :(得分:2)

您可以使用action()帮助程序生成路线的网址:

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

你也可以使用:

路线:

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');

希望这能帮到你!

答案 2 :(得分:0)

使用此代码,看看你会得到什么:

路由/web.php

chart.encode(
  color=alt.value('black')
)

形式:

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