繁体   English   中英

Laravel-注册不发送数据到数据库

[英]Laravel - Register don't send data to database

我在Laravel 5.4上,我正在尝试做一个注册页面,但数据未在我的数据库中发送。而且我没有任何错误。

这是控制器:(由Laravel生成)

namespace App\Http\Controllers\Auth;

use App\User;
use App\PostUser;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{

    protected $primaryKey = "id_biodiv_acteur";
    protected $table = "acteur";

    use RegistersUsers;

    protected $redirectTo = '/pages/users';

    public function __construct()
    {
        $this->middleware('guest');
    }

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'surname' => 'string|max:255',
             ...            
            'picture' => 'image'
        ]);
    }

    protected function create(array $data)
    {
        return User::create([
            'nom' => $data['name'],
            'prenom' => $data['surname'],
             ...
            'image' => $data['picture']
        ]);
    }
}

我的register.blade.php:

<div class="add-content container">

        <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

        <h1>&bull; Ajouter un utilisateur &bull;</h1>
        <div class="underline"></div>

        <form action="{!! route('register') !!}" accept-charset="UTF-8" method="post" role="form">
            {!! csrf_field() !!}
            <div class="column-left">

                <label class="has-float-label" for="name">
                    <input class="" type="text" placeholder="" name="name" required>
                    <span>Nom</span>
                </label>

                <label class="has-float-label" for="password">
                    <input class="" type="password" placeholder="" name="password" required>
                    <span>Mot de passe</span>
                </label>

                ...

                <label class="has-float-label" for="picture">
                    <input type="file" name="picture" multiple>
                    <span>Ajoutez des images</span>
                </label>
            </div>
            <button type="submit" name="button">Enregistrer</button>
        </form>
    </div>

我添加了一个模型到控制器(PostUser.php):

use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Auth\Events\Registered;

class PostUser extends Model
{

    public $timestamps = false;
    protected $primaryKey = "id_acteur";
    protected $table = "acteur";

    protected $fillable = [
        'nom',
        'prenom',
         ...
        'image'
    ];
}

Laravel为注册创建了路由:

$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');

但是我在RegisterController中没有任何函数调用寄存器或showRegistrationForm

如果route('register')转到RegisterController@create方法,则可以在该方法的Request参数中获取用户输入的数据:

protected function create(\Illuminate\Http\Request $request)
{
    return User::create([
        'nom' => $request->name,
        'prenom' => $request->surname,
         ...
        'image' => $request->picture
    ]);
}

另外,如评论中所述,您需要将User更改为PostUser ,反之亦然。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM