【问题标题】:Laravel: Action App\Http\Controllers\NotesController@store not definedLaravel:Action App\Http\Controllers\NotesController@store 未定义
【发布时间】:2018-04-06 11:15:54
【问题描述】:

我有一个表格

<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 未定义。 (看法: C:\xampp\htdocs\personal_projects\Active\diary_app\resources\views\diary\entry.blade.php)

【问题讨论】:

  • 你在文件中添加路由了吗?
  • 为有问题的NotesController@store 添加您的路线!
  • Laravel 是哪个版本的?
  • 现在是 5.5,我已经添加了 Route::resource('notes', 'NotesController'); 并且可以使用...

标签: php laravel laravel-blade laravel-5.5


【解决方案1】:

您需要在routes/web.php中为控制器定义网络路由

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

【讨论】:

    【解决方案2】:

    您可以使用 action() 帮助器生成路由的 URL:

    <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'=&gt;route('notes.create'))) }}

    如果你使用的是 Laravel resourceController,那么使用:

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

    希望对您有所帮助!

    【讨论】:

      【解决方案3】:

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

      路由/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>
      

      【讨论】:

        猜你喜欢
        • 2021-02-18
        • 2021-07-08
        • 2019-05-13
        • 2017-06-30
        • 2021-02-07
        • 1970-01-01
        • 2022-11-15
        • 2020-02-26
        • 2019-11-17
        相关资源
        最近更新 更多