基本表单验证和插入数据库

时间:2016-02-21 16:59:20

标签: php validation insert laravel-5

我正在使用Laravel 5.2自行开发一个项目

我在注册表单验证并插入到数据库进程。

路线:

Route::post('/register', 'UserController@create');

UserController中:

<?php

namespace App\Http\Controllers;

use Crypt;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    public function create(CreateUserRequest $request)
    {
        $user = new User;
        $user->all() = User::all();
        $user->password = Crypt::encrypt($user->password);
        $user->save();
    }
}

CreateUserRequest:

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class CreateUserRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
        'username' => 'required|regex:[a-zA-Z0-9]+|between:3,12|unique:users',
        'email' => 'required|email|unique:users',
        'password' => 'required|regex:(?=.*[A-Z])(?=.*\d).+|min:6|confirmed',
        'password_confirmation' => 'required',
        ];
    }
}

当我提交完成的表单时,它不会在数据库中插入新用户。我知道我必须在最后进行重定向,但我只想尝试在users表中插入新用户。

我做错了吗?我错过了什么吗?提前谢谢!

编辑:如果那里有问题,请提供我的注册表。

                    <form method="POST" action="/register">                     
                    <div class="form-group">
                        <label for="username">Nom d'utilisateur</label>
                        <div class="input-group">
                            <div class="input-group-addon"><i class="fa fw fa-user"></i></div>
                            <input type="text" class="form-control" name="username" placeholder="Nom d'utilisateur" required
                                                                                                                    minlength="3"
                                                                                                                    maxlength="12"
                                                                                                                    data-validation-regex-regex="[a-zA-Z0-9]+"
                                                                                                                    data-validation-regex-message="Votre nom d'utilisateur doit comporter entre 3 et 12 caractères alphanumériques."
                                                                                                                    data-validation-minlength-message="Votre nom d'utilisateur doit comporter entre 3 et 12 caractères alphanumériques.">
                        </div>
                        <span id="helpBlock" class="help-block">Ce nom d'utilisateur sert à vous identifier et sera visible sur le forum. Ce n'est pas votre nom en jeu. Votre nom doit contenir entre 3 et 12 caractères alphanumériques.</span>
                    </div>
                    <div class="form-group">
                        <label for="username">Courriel</label>
                        <div class="input-group">
                            <div class="input-group-addon"><i class="fa fw fa-envelope"></i></div>
                            <input type="email" class="form-control" name="email" placeholder="example@domain.com"  required
                                                                                                                    data-validation-email-message="Votre adresse courriel doit être valide afin de compléter votre inscription.">
                        </div>
                        <span id="helpBlock" class="help-block">Votre adresse courriel doit être valide afin de compléter votre inscription.</span>
                    </div>
                    <div class="form-group">
                        <label for="username">Mot de passe</label>
                        <div class="input-group">
                            <div class="input-group-addon"><i class="fa fw fa-lock"></i></div>
                            <input type="password" class="form-control" name="password" placeholder="Mot de passe"  required
                                                                                                                    minlength="6"
                                                                                                                    data-validation-regex-regex="(?=.*[A-Z])(?=.*\d).+"
                                                                                                                    data-validation-minlength-message="Votre mot de passe doit comporter au moins 6 caractères alphanumériques dont minimum une lettre majuscule et un chiffre."
                                                                                                                    data-validation-regex-message="Votre mot de passe doit comporter au moins 6 caractères alphanumériques dont minimum une lettre majuscule et un chiffre.">
                        </div>
                        <span id="helpBlock" class="help-block">Votre mot de passe doit comporter au moins 6 caractères alphanumériques dont minimum une lettre majuscule et un chiffre.</span>
                    </div>
                    <div class="form-group">
                        <label for="username">Confirmation du mot de passe</label>
                        <div class="input-group">
                            <div class="input-group-addon"><i class="fa fw fa-lock"></i></div>
                            <input type="password" class="form-control" name="password_confirmation" placeholder="Mot de passe" required
                                                                                                                    data-validation-match-match="password">
                        </div>
                    </div>
                    <div class="g-recaptcha" data-sitekey="6LcrSRgTAAAAAJ5RbvAlBMZ20OPrI_UYjtLFjqic"></div>
                    <div class="checkbox">
                        <label>
                            <input type="checkbox" name="eula" required> J'ai lu et j'accepte les <a>conditions générales d'utilisation</a>.
                        </label>
                        <button type="submit" class="btn btn-primary pull-right"><i class="fa fw fa-user-plus"></i> S'inscrire</button>
                    </div>
                </form>

2 个答案:

答案 0 :(得分:0)

请检查此doc,其中包含有关如何将数据插入数据库的信息。

 public function create(CreateUserRequest $request)
    {
        $user = new User;
        $user->all() = User::all();
        $user->password = Crypt::encrypt($user->password);
        $user->save();
    }

在上面的功能中,你所做的是,

$user = new User;

将创建一个新的用户模型对象

 $user->all() = User::all();

将调用用户模型所有方法从数据库中检索数据。和

$user->password = Crypt::encrypt($user->password);

将使用表格的密码字段更新表格的密码字段。

最后

$user->save();

将尝试使用更新的值保存数据。但是你试图将新用户插入db中吗?所以,你可以简单地做这样的事情:

    public function create(CreateUserRequest $request){
$user = new User;
    $user->username = $request->username;
        $user->password = Crypt::encrypt($request->password');
        $user->save();

        return Redirect::back();
    }

希望这会有所帮助。

答案 1 :(得分:0)

试试这个:

public function create(CreateUserRequest $request)
{
    $data = $request->all();
    $user = User::create([
        'username' => $data['username'],            
        'email' => $data['email'],
        //Here you put all your user fields like lastname and username above
        ...                    
        'password' => Crypt::encrypt($data['password']),
        ...                                   
      ]);        
}