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');代码>很有趣,因为我认为使用操作(…)
方法的意义在于,我们不必显式定义路由。如果我仍然必须定义命名路由,为什么我仍然需要使用此操作
选项?我猜是个人偏好。是的,事实上,我认为从现在起,你可以选择使用路线还是控制器。就个人而言,我发现调用控制器更为明确,但这只是我的观点。