Php 为什么控制器没有重定向到Laravel 5.4中的正确视图
在下面的代码片段中,我的示例页面中有一个html表单,表单的action属性设置为exampleController URI,如下所示: htmlPage.blade.phpPhp 为什么控制器没有重定向到Laravel 5.4中的正确视图,php,laravel,Php,Laravel,在下面的代码片段中,我的示例页面中有一个html表单,表单的action属性设置为exampleController URI,如下所示: htmlPage.blade.php <form action="/exampleController" method="POST"> {{csrf_field()}} // rest of form stuff goes here </form> @if(isset($result)) <table&g
<form action="/exampleController" method="POST">
{{csrf_field()}}
// rest of form stuff goes here
</form>
@if(isset($result))
<table>
<td>{{ $result }}</td>
</table>
@endif
Controller.php
class PageController extends Controller
{
public function showform()
{
return view('htmlPage');
}
}
public function processData(Request $request)
{
$result = $request['htmlInputData'];
return view('htmlPage')->with(compact('result');
}
}
从这里开始一切正常,数据正在正确处理并显示在页面上,但我想知道为什么控制器为$result
变量返回的URL地址是mydomain.com/exampleController
,而不是mydomain.com/htmlPage
,后者是负责显示结果的html页面行动的细节
另外,由于生成的URL地址是mydomain.com/exampleController
(这不是我所期望的),因此手动刷新时返回以下错误:
MethodNotAllowedHttpException in RouteCollection.php line 233:
谁能告诉我我错过了什么?
提前谢谢
编辑:
通过更改为
Route::any
,MethodNotAllowedHttpException
错误已消失,但控制器返回的URL仍然不正确。发生这种情况是因为您返回了一个视图(视图('htmlPage')
)
如果要访问此urlmydomain.com/htmlPage
,则需要重定向而不是加载视图
将此返回重定向(url('/htmlPage'))->与(compact('result');
为了成功加载,您需要有另一条路由:
Route::get('/htmlPage', 'PageController@loadhtmlPage');
此外,要加载此url中的视图,您必须在控制器中执行以下操作:
public function loadhtmlPage(Request $request)
{
return view('htmlPage');
}
这是因为您返回了一个视图(
View('htmlPage')
)
如果要访问此urlmydomain.com/htmlPage
,则需要重定向而不是加载视图
将此返回重定向(url('/htmlPage'))->与(compact('result');
为了成功加载,您需要有另一条路由:
Route::get('/htmlPage', 'PageController@loadhtmlPage');
此外,要加载此url中的视图,您必须在控制器中执行以下操作:
public function loadhtmlPage(Request $request)
{
return view('htmlPage');
}
当从控制器执行返回重定向时,它将导致404。但是直接访问它是可以的。这是因为您的路由中没有路由。php有一个单独的路由来访问表单页面,还有一个单独的路由来处理表单处理是的,但您想转到另一个路由(/htmlpage)提交表单后,我更新了上面的问题以显示我的路由以显示表单页面。当从控制器返回重定向时,它将导致404。但是直接访问它是可以的。这是因为您的路由中没有路由。php有一个单独的路由访问表单页面,还有一个单独的路由处理表单过程ssingyes但您想在提交表单后转到另一个路由(/htmlpage)。我已经更新了上面的问题以显示我的路由以显示表单页面。