我只是想知道我的项目。我有一个可以在localhost/app/esetting/mymail
访问的表单,这是视图中的代码:
....
<form action="{{ url( 'app/esetting/emailautomsave' ) }}" class="form-horizontal" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
...
<input type="submit" value="save">
</form>
但是当我尝试点击表单提交时,我希望它转到app/esetting/emailautomsave
并调用我的SettingsController.php
上的控制器。
public function postEmailautomsave(Request $request){
...
}
但它重定向到CCD_ 4?并给我这个错误:
NotFoundHttpException in Controller.php line 93:
Controller method not found.
这听起来很奇怪。有人知道这件事吗?我确信我在routes.php
上做得对
Route::group([ 'prefix' => 'app', 'middleware' => 'auth' ], function() {
....
Route::controller('esetting', 'SettingController');
Route::get( 'esetting/mymail', 'SettingController@viewEmailAutom' ); // view for the form to display
....
只需简单定义:
Route::post('esetting/mymail/emailautomsave', 'SettingController@postEmailautomsave');
我知道你会说:"我已经定义了Route::controller,所以它会自动寻找它。">
但对我来说,最好能准确地定义路线。
如果:
它重定向到localhost/app/mymail?并给我这个错误:
Controller.php中的NotFoundHttpException第93行:控制器方法找不到。
也许这意味着某个中间件正在将你重定向到那里?
你可以通过简单的操作进行检查:
public function postEmailautomsave(Request $request){
die('test');
...
}
如果它将重定向,则意味着之前调用了某个函数,并将浏览器重定向到app/mymail
。
如果使用Route::controller,则需要根据路由定义方法。例如
Route::controller('esetting', 'SettingController');
将查找SettingController@getIndex当您访问http://yoursite.com/esetting 时
到达SettingController@postEmailAutomsave((您需要转到路线http://yoursite.com/esetting/emmail/automsave
我自己还没有使用Route::控制器,我也习惯了(现在更喜欢(单独命名它们。但这应该会奏效。
Laravel 5.1文档