如何从登录视图中的 select 中捕获值并将其声明为全局值?

How to capture a value from a select in the login view and declare it global?

我无法设法从我的登录视图中的组合中捕获值,无法在用户注册表中使用它。我正在尝试使用 laravel 5.1 文档中描述的 HTTP 路由方法,但没有成功。

这是 login.blade.php 视图中的组合 cboFranquicias,我想捕获其值以将其传递给用户注册表视图:

<form method="POST" action="{{ url('/auth/login') }}">
    {!! csrf_field() !!}
    <div class="row margin">
      <div class="input-field col s12">
    <i class="mdi-social-person-outline prefix"></i>
    <input type="text" name="usuario" id="usuario" value="{{ old('usuario') }}" required>
    <label for="usuario" class="center-align">Usuario</label>
    </div>
  </div>
  <div class="row margin">
    <div class="input-field col s12">
      <i class="mdi-action-lock-outline prefix"></i>
      <input type="password" name="password" id="password" required>
      <label for="password">Contraseña</label>
    </div>
  </div>

 <!--COMBO TO LIST FRANQUICIAS -->
   <br><div class="input-field col m12 s12" style="right:-1%">
    {!!Form::select('Franquicias', $combo_franquicias, null, ['placeholder'=>'--Selecciona--','id'=>'cboFranquicias','name'=>'cboFranquicias'])!!} 
    {!!Form::label('Franquicias')!!}
  </div><!--END COMBO -->


  <div class="row">
      <!--ACOMODADO TAMAÑO DEl BOTON ENTRAR-->
    <div class="input-field col s12 m12">
      <button type="submit" class="btn waves-effect waves-light col s12 m12 19">Entrar</button>
    </div>
  </div>
</form>

稍后,在 routes.php 中,我声明了一个路由,该路由通过方法获取登录中输入的值,到将 return 用户注册表视图的函数:

Route::get('registrar', 'Auth\AuthController@VistaRegistraUsuario');
Route::post('auth/login', 'Auth\AuthController@VistaRegistraUsuario');

这里是 return 到 AuthController.php 文件中的用户注册表视图的函数:

public function VistaRegistraUsuario(Request $request)
  {
 $id_franquicia = $request->input('cboFranquicias');
 //dd($id_franquicia);
 $cargos = cargos_usuarios::lists('descripcion', 'id');

 return view('auth.register', compact('cargos','id_franquicia'));
  }

但是,该值永远不会到达用户注册表视图,它应该传递以填充我在该视图中的隐藏输入 register.blade.php:

{!!Form::input('Id_franquicia', $id_franquicia, null, 
['type'=>'hidden','name'=>'id_franquicia', 'id'=>'id_franquicia'])!!}

如何在登录视图中捕获 franquicias 组合的值并将其保存到全局变量,以将该值传递给用户注册视图?

您可能想要更改 select 引用,Form::select 方法的第一个参数是字段名称。所以试试,

{!!Form::select('cboFranquicias', $combo_franquicias, null, ['placeholder'=>'--Selecciona--','id'=>'cboFranquicias'])!!}

在您的控制器中,您正在使用 $request->input('cboFranquicias')

因此无需将 name 作为选项的一部分传递,如果未设置 options['name'],则 method signature 将默认为 $name

更新以使用会话逻辑

如果您想在登录后为 post 保持相同的端点,然后到达相同的端点,您可以执行类似以下操作:

public function VistaRegistraUsuario(Request $request)
{
    // Set the session on the auth/login post request
    if ($request->has('cboFranquicias')) {
        session(['id_franquicia' => $request->input('cboFranquicias')]);
    }

    $cargos = cargos_usuarios::lists('descripcion', 'id');

    return view('auth.register', [
        'cargos' => $cargos,
        'id_franquicia' => session('id_franquicia'),
    ]);
}

我已经使用session方法解决了问题,所以留下解决方案:

提交登录后,我立即捕获了我的 franquicia 组合的选定值:

  `protected function handleUserWasAuthenticated(Request $request, $throttles)
{
    if ($throttles) {
        $this->clearLoginAttempts($request);
    }

    if (method_exists($this, 'authenticated')) {
        return $this->authenticated($request, Auth::user());
    }

    $id_franquicia = $request->input('franquicia_id');//CAPTURO LA ID DEL COMBO DE FRANQUICIAS
    Session::set('id_franquicia', $id_franquicia);// GUARDO EN UNA VARIABLE GLOBAL LA ID CAPTURADA, POR MEDIO DE SESSION

    return redirect()->intended($this->redirectPath());


}`

我使用 request->input 捕获 id 的值,并将其保存在一个变量中,然后使用 session :: set 声明为全局变量,然后使用 session :: get 在我的用户注册视图中使用它

//VISTA PARA EL REGISTRO DE USUARIO
  public function VistaRegistraUsuario()
{

  $id_franquicia_usuario = Session::get('id_franquicia');//ID DE LA FRANQUICIA
  $cargos = cargos_usuarios::lists('descripcion', 'id'); //COMBO DE LOS CARGOS

  return view('auth.register', compact('cargos', 'id_franquicia_usuario'));
}// FIN VISTA