laravel 5,表单提交重定向到未知url值


laravel 5, form submit redirect to unknown url value

我只是想知道我的项目。我有一个可以在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文档