我对Laravel 5.1有一段非常沮丧(超级新手)的经历。当然,我一定遗漏了一些东西,但不幸的是,我在Laravel文档上找不到任何东西。
问题是这样的(我认为这甚至相对简单):虽然所有的GET路由都在工作,但POST中的路由正在将我"重新路由"到错误的地方。例如,假设控制器是这样的:
namespace App'Http'Controllers;
use Illuminate'Routing'Controller as BaseController;
use View;
class PagesController extends BaseController {
public function hello(){
return view('hello');
}
public function register(){
//Registration rules
$inputData=array(
'name' => 'Input::get('name'),
'email' =>'Input::get('email'),
'password' => bcrypt('Input::get('password')),
);
createUser($inputData);
return view('stat');
}
private function createUser($inputData){
return User::create($inputData);
}
}
并给出路线:
Route::get('/','PagesController@hello');
这一个按照指示的方法将我正确地重定向到控制器中指定的视图。
POST操作无法成功执行,因为
Route::post('/','PagesController@register');
形式具有:
<form action="/" method="post">
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
<label for="name">User Name</label><br/>
<input type="text" name="name" id="name"/><br/>
<label for="name">E-mail</label><br/>
<input type="text" name="email" id="email"/><br/>
<label for="password">password</label><br/>
<input type="password" name="password" id="password"/><br/>
<input type="submit" value="auth!"/>
</form>
结果将我重定向到examplep主页。例如,"主注册页面"位于以下网址:
http://localhost:8080/laravel/project1/public/
(好了)当我点击提交按钮时,我会被发送到
http://localhost:8080/
只有几个指标可以让你试着帮助我(我真的很困):1) 我没有使用VirtualHost(在网上搜索过,但在正确配置apache方面总是运气不佳…祝你好运,我有examplep)2) 页面"你好"有一个我用作测试的链接:
<a href="stat">Link</a>
它将我正确地重定向到备受追捧的
http://localhost:8080/laravel/project1/public/stat
3) 在POST方法中,我使用了dd($inputData)
来查看出了什么问题,结果我得到了。。。没有什么不是空白页,只是始终是localhost
页。这让我想到,不知何故,控制器方法没有被调用,因为页面中没有dd(---)
结果。希望有人能帮忙。非常感谢
您的域是http://localhost:8080,所以当您将action设置为"/"时,它将转到root。这不是一个好的做法,但你的解决方案是改变:
<form action="/laravel/project1/public/" method="post">
我将在apache中为该项目创建一个虚拟主机,因此文档根目录将为/lavel/project1/public/。
您将表单发布到根/
,这就是您被路由到examplep页面的原因。要解决此问题,请将表单操作更改为此
<form action="/post/my/form" method="post">
在您的路线
Route::post('/post/my/form','PagesController@register');