如何将变量传递给寄存器视图?

Ste*_*eve 9 laravel laravel-5.3

我用php artisan make:auth 它生成了寄存器视图和/ register路由.但是我需要将一个变量传递给这个寄存器视图:

<label>Region:</label>
<select  name="region" id="region" class="form-control" >
<option>--Select a Region--</option>
    @foreach($region as $reg)
        <option value="{{$reg->region_id}}">{{$reg->region_name}}</option>
    @endforeach                
</select><br>
Run Code Online (Sandbox Code Playgroud)

就像是:

public function register()
{
   $region=Region::all();
   return view('auth.register')->with('region',$region);
}
Run Code Online (Sandbox Code Playgroud)

但这种方法在哪里?

Sar*_*mar 15

你可以通过两种方式实现这一目标.

覆盖寄存器用户

Laravel的默认身份验证使用RegisterController上的RegistersUsers trait来呈现视图.您可以做的只是覆盖RegisterController上的Illuminate\Foundation\Auth\RegistersUsers上的函数,如下所示

/**
 * Show the application registration form.
 *
 * @return \Illuminate\Http\Response
 */
public function showRegistrationForm()
{
    $region=Region::all();
    return view('auth.register', compact('region'));
}
Run Code Online (Sandbox Code Playgroud)

现在上面的代码将覆盖该特征并使用来自控制器的showRegistrationForm.

修改路由

执行此操作时php artisan make:auth,它会将其添加Auth::routes()到您的web.php文件中.删除它并添加以下内容,

// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

// Registration Routes...
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'Auth\RegisterController@register');

// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');
Run Code Online (Sandbox Code Playgroud)

现在进行注册,将RegisterController @ showRegistrationForm修改为RegisterController @ register.

但是不要只使用注册.而是像getRegisterForm一样使用.因为寄存器功能处理后置寄存逻辑.


Man*_*ash 5

Laravel Auth:它使用的showRegistrationForm()方法来创建注册页面。因此,我们需要重写该方法。

只是重写showRegistrationForm()方法

public function showRegistrationForm() {
    $data = [1, 2, 3, 4];
    return view ('auth.register')->withData($data);
}
Run Code Online (Sandbox Code Playgroud)

并使用$data... 捕获注册页面中的数据