Php 操作应用程序\Http\Controllers\Controller@action未定义

Php 操作应用程序\Http\Controllers\Controller@action未定义,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,我想提交一个表单,但我总是得到Action-App\Http\Controllers\About@show未定义,即使定义了功能显示: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; class AboutController extends Controller { public function create() {

我想提交一个表单,但我总是得到
Action-App\Http\Controllers\About@show未定义
,即使定义了功能显示:

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;


class AboutController extends Controller
{
    public function create()
    {
        return view('about.contact');
    }

    public function show()
    {
        return view('about.contactshow');
    }

}
我做错了什么?

我能解决它。 首先,我必须更改
'action'=>'About@show“
“操作”=>”AboutController@show“

然后我必须在routes.php中注册所有控制器操作:

Route::post('contact_show', [
    'uses' => 'AboutController@show'
  ]);

Route::get('contact_create', [
    'uses' => 'AboutController@create'
  ]);
Route::resource('model', 'ModelController', [
     'only' => ['index']
]);

你打电话给的不是好管制员

{!! Form::open(array('action' => 'AboutController@show', 'method' => 'post')) !!}
而不是:

{!! Form::open(array('action' => 'About@show', 'method' => 'post')) !!}
它正试图采取行动About@show但是你没有在你的控制器中这样定义它

{!! Form::open(array('action' => 'AboutController@show', 'method' => 'post')) !!}

希望有帮助

仅此而已,因为路由文件
web.php
。请检查您发送的文件

当您收到此错误时,可能是您在web.php或其他操作方法中输入了错误的拼写。只需检查拼写。

我也有类似的问题,但不是我的控制器名错了(web.php和实际文件名100%正确)。由于早期的“重构”,它取代了我的表单操作/方法。 因此,我的表单开启器看起来是这样的:

{!! Form::open(['method'=>'POST', 'action'=>'AdminBankingDetailController', 'class'=>'m-form m-form--state']) !!}
而不是像这样(对于创建视图/页面):

确保您的表单上有@action。

我也有同样的问题

问题在于
routes/web.php
。我一步一步地构建我的应用程序,因此我使用
“only”
将第二个数组传递给我的路由,使其创建索引路由only

Route::post('contact_show', [
    'uses' => 'AboutController@show'
  ]);

Route::get('contact_create', [
    'uses' => 'AboutController@create'
  ]);
Route::resource('model', 'ModelController', [
     'only' => ['index']
]);
但是在创建“create”视图之后,我无法将数据传递到控制器中的
store
函数。我发现这是因为
store
函数需要显式路由(如上所述)。所以我像这样将它添加到
'only'
数组中,它的工作方式就像一个符咒:

Route::resource('model', 'ModelController', [
    'only' => [
        'index',
        'create',
        'store',
    ]
]);

(Laravel v.7.4.0)

您的控制器名为
AboutController
,但您试图访问
About
。谢谢您的提示。现在我得到了
Action-App\Http\Controllers\AboutController@show未定义
。只有在添加了路由之后,它才能工作。您的路由应该在
web.php
routes.php
中这样定义,具体取决于您使用的laravel版本:
route::get('Your_route','AboutController@show');很有趣,因为我认为使用
操作(…)
方法的意义在于,我们不必显式定义路由。如果我仍然必须定义命名路由,为什么我仍然需要使用此
操作
选项?我猜是个人偏好。是的,事实上,我认为从现在起,你可以选择使用路线还是控制器。就个人而言,我发现调用控制器更为明确,但这只是我的观点。