我想在提交注册表单时将数据从 URI 传递到注册控制器


I want to pass data from the URI to the Sign Up controller when submitting the Sign up form

我加载注册页面的路由是

Route::get('join/{mobileNumber}', 'JoinController@index');

提交表格时有没有办法传递变量"手机号码"?我可以在表单中创建隐藏输入,但这是否是进一步传递变量的最佳方式?

是的,将变量从索引方法传递到视图:

路线.php

Route::get('join/{mobileNumber}', 'JoinController@getJoin');
Route::post('join/{mobileNumber}', 'JoinController@postJoin');

连接控制器

<?php
# ...
    public function getJoin($mobileNumber)
    {
        # ...
        return view('mobile_join', compact('mobileNumber'));
    }
    public function postJoin($mobileNumber, RegisterRequest $request)
    {
        $user = new User();
        $username = $request->input('username');
        $user->password = bcrypt($request->input('password'));
        $user->email = $request->input('email');
        $user->phone = $mobilePhone;
        $user->is_active = 0;
        $user->save();
        # or
        $data = $request->only(['username', 'email']);
        $data['phone'] = $mobilePhone;
        $data['password'] = bcrypt($data['password']);
        $data['is_active'] = 0;
        $user = User::create($data);
        # ...
        redirect()->route('...');
    }

用户.php - 型号

protected $fillable = ['username', 'email', 'phone', 'password', 'is_active'];

mobile_join.刀片.php

<form action="/join/{{ $mobileNumber }}" method="post">
    {!! csrf_field() !!}
    <!-- ... -->
</form>

HTTP 1.1 支持两种方法,GET 和 POST,我们通过 POST 发送表单数据,并通过 GET 传递手机号码。Laravel使用正则表达式从URL中提取字符串并设置变量。