在下面的代码片段中,我的示例页面中有一个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>
<td>{{ $result }}</td>
</table>
@endif
Web.php
Route::get('/gotoform', 'PageController@showform');
Route::post('/exampleController', 'PageController@processData');
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
而不是{{1}这是负责显示操作结果的html页面。
此外,由于生成的URL地址为mydomain.com/htmlPage
(这不是我的预期),因此在手动刷新时会返回以下错误:
mydomain.com/exampleController
有人可以告诉我,我错过了什么? 提前谢谢。
编辑:
通过更改为MethodNotAllowedHttpException in RouteCollection.php line 233:
,Route::any
错误已消失,但控制器返回的网址仍然不正确。
答案 0 :(得分:0)
这是因为您返回了一个视图(view('htmlPage')
)。
如果您想访问此网址mydomain.com/htmlPage
,则需要重定向不加载视图。
使用此return redirect(url('/htmlPage'))->with(compact('result');
为了成功加载,您需要另一条路线:
Route::get('/htmlPage', 'PageController@loadhtmlPage');
并且要加载此网址中的视图,您必须在控制器中执行此操作:
public function loadhtmlPage(Request $request)
{
return view('htmlPage');
}