Laravel 4表单数据未提交给DB

时间:2014-04-04 17:15:02

标签: mysql laravel controllers

我在Laravel中遇到此问题,并基于路由控制器和使用x.blade.php文件构建表单。页面显示正常,我可以输入数据并测试规则,这一切都很好。问题在于提交数据,我点击提交并且错误返回"电子邮件地址是必需的"。

当我点击提交时,电子邮件地址中包含数据,当$rules$validation在路径文件中时,我告诉你我有这个工作。我只是不明白它是如何看不到电子邮件领域的数据的 数据库中有一个名为users的表,其中包含相应的字段。

路由文件:

Route::get('register', 'LoginController@getRegistration');
Route::post('logging', 'LoginController@postCreate');

User.php文件:

<?php
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface 
{

public static $rules = array(
'email' => 'required|email|unique:users',
'password' => 'required|alpha_num|between:6,20|same:password_confirm',
'password_confirm' => 'required'
);
//user.php default values
}

LoginController.php文件:

<?php
class LoginController extends BaseController
{
   public function __construct()
   {
     $this->beforeFilter('csrf', array('on'=>'post'));
   }
   public $layout = 'layout.registration';
   public function getRegistration()
   {
    //
   }
   public function postCreate()
   {
     $validation = Validator::make(Input::all(), User::$rules);
     if ($validation->fails())
   {
      return Redirect::to('register')->withErrors($validation)->withInput();
   }
      $users = new User;
      $users->email = Input::get('email');
      $users-password = Hash::make(Input::get('password'));
      if ($users->save())
   {
      Auth::loginUsingId($users->id);
      return Redirect::to('profile');
   }
      return Redirect::to('register')-withInput();
   }
}

registration.blade.php文件:

<h2>New Registeration</h2>
    <?php $messages = $errors-all('<p style="color:red">:message</p> ?>
    <?php foreach ($messages as $msg): ?>
       </= $msg ?>
    <?php endforeach; ?>
<?= Form::open(array('action'=>'LoginController@postCreate')) ?>
<?= Form::label('email', 'Email Address: ') ?>
<?= Form::text('text', Input::old('email')) ?>
<br />
<?= Form::label('password', 'Password: ') ?>
<?= Form::password('password') ?>
<br />
<?= Form::label('password_confirm', 'Password Confirm: ') ?>
<?= Form::password('password_confirm') ?>
<br />
<?= Form::submit('Submit') ?>
<?= Form::close() ?>

1 个答案:

答案 0 :(得分:1)

您没有email字段。您有一个电子邮件字段的标签,但是当您实际输出字段本身时,您将其名称设置为text

请尝试<?= Form::text('email', Input::old('email')) ?>

并且为了让你后来有些头疼,正如评论的那样,你拼错了你的构造函数。就像现在一样,它永远不会达到csrf验证。