当前位置: 首页 > 知识库问答 >
问题:

如何通过重定向将数据传递到laravel中的视图

钱青青
2023-03-14

如果我有一个获取路由,那么在控制器执行某些操作之后,如何通过 将数据从它传递给视图呢?

该应用程序的逻辑是使用 重定向到一个视图,用户在成功验证其电子邮件后将在该视图中选择其用户名。

public function confirm($confirmationCode){
 if(!$confirmationCode){
   dd('No se encontró ningún código de verificación en la URL');
 }
 $user = User::where('confirmation_code', $confirmationCode)->first();
 if(!$user){
   dd('Lo sentimos. Este código de confirmación ya ha sido usado.');
 }
 $user->confirmed = 1;
 $user->confirmation_code = null;
 $user_id = $user->user_id;
 $user->save();

 return redirect('assign-username')->with(compact('user_id'));
}

get路由:

Route::get('assign-username', 'AuthenticationController@showAssignUsernameForm');

表单的post请求的代码。

public function assignUsername(){
  $user_id = request()->input('user_id');
  $username = request()->input('username');
  if(User::where('username', '=', $username)->exists()){
    return redirect()->back()->withInput()->withErrors([
    'username' => 'Este usuario ya se encuentra registrado. Intenta nuevamente'
  ]);
  }else{
    DB::table('user')->where('user_id', $user_id)->update(['username' => $username]);
  }
 }

当试图访问 变量时,它表示未定义该变量。

视图的代码:

@extends('layouts.master')
@section('content')
    <section class="hero">
        <h1><span>Ya estás casi listo.</span>Es hora de seleccionar tu nombre de usuario</h1>
            <div class="form-group">
                <form class="form-group"  method="post" action="assign-username">
                    {!! csrf_field() !!}
                    @if($errors->has('username'))
                        <span class="help-block" style="color:red">
                            <strong>{{ $errors->first('username') }}</strong>
                        </span>
                    @endif
                    <input type="hidden" name="user_id" value="{{ session('user_id') }}">
                    <input type="text" name="username" placeholder="Escribe tu nombre de usuario">
                    <button type="submit" class="btn" name="send">Registrar</button>
                </form>
            </div>
        </section>
@endsection

Laravel版本:5.2

共有3个答案

闻人思聪
2023-03-14

如果要将数据传递给视图,则要在 之后获取信息,必须通过 执行如下操作:

 @if (session('user_id'))
    <input type="hidden" name="user_id" value="{{ session('user_id') }}">           
@endif
颜新
2023-03-14

这应该会起作用:

public function assignUsername(Request $request)
{
    $user_id = $request->user_id;
衡玄裳
2023-03-14

。。。

更新

在隐藏输入上存储 有点冒险,如果你的用户知道如何在浏览器(比如Chrome developer console)上更改该值,并用另一个用户ID替换它,那该怎么办呢?

我将它存储为会话闪存数据,而不是将其存储在隐藏输入中,它可以是:

public function confirm($confirmationCode){
    ....

    session()->flash('user_id', $user_id); // Store it as flash data.

    return redirect('assign-username');
}

上告诉Laravel保留您的 以备下一次请求:

public function showAssignUsernameForm() {
    session()->keep(['user_id']);
    // or
    // session()->reflash();

    return view('your-view-template');
}

在assign username 方法中,您可以像下面这样定义值:

public function assignUsername(){
    $user_id  = session()->get('user_id');
    $username = request()->input('username');

    if(User::where('username', '=', $username)->exists()) {
        session()->flash('user_id', $user_id); // Store it again.

        return redirect()->back()->withInput()->withErrors([
            'username' => 'Este usuario ya se encuentra registrado. Intenta nuevamente'
        ]);
    } else {
        DB::table('user')->where('user_id', $user_id)->update(['username' => $username]);
    }
}
 类似资料:
  • 问题内容: 我想在Laravel 5应用程序的所有视图中都可以访问一些默认数据。 我尝试搜索它,但仅找到Laravel 4的结果。我在这里阅读了文档“使用所有视图共享数据” ,但我不知道该怎么做。以下代码应放在哪里? 谢谢你的帮助。 问题答案: 这个目标可以通过不同的方法来实现, 1.使用BaseController 我喜欢设置的方式,我制作了一个扩展Laravel自己的类,并在那里设置了各种全局

  • 我在我的web应用程序中使用SpringMVC和thymeleaf。 在其中一个场景中,我有一个控制器,在其功能结束时执行重定向。我需要向前端传递一个参数(实际上是一条成功/失败警报消息)。如何实现此行为。 我可以知道model.add属性()不能在重定向时实现。 以下是控制器代码。 下面是视图(thymeleaf)代码。[注意:我需要获取javascript变量的值]

  • 问题内容: 我是laravel的新手,我一直试图将表’student’的所有记录存储到一个变量,然后将该变量传递给视图,以便可以显示它们。 我有一个控制器-ProfileController,里面有一个函数: 我认为我有此代码 我收到此错误:未定义的变量:学生(View:regprofile.blade.php) 问题答案: 你能试试看吗 同时,您可以设置多个类似这样的变量,

  • 我的数据库中有两个表。它们是食物和亚食物。我想在foods模型中获得sub_foods的名称作为数组,并将其传递到create.blade.php文件,以便在表单中创建一个动态下拉框。这是我的密码, FoodsController.php create.blade.php

  • 我有以下密封类: 我希望将此从xml传递给视图模型: 然后我在需要将信息传递给click处理程序的视图中使用lambdas: 我得到这个错误: 找不到标识符“pot”。检查标识符的拼写是否正确,并且没有或标记丢失。 我也尝试过直接导入,但仍然不起作用

  • 问题内容: 每当网页加载时,我都会调用PHP脚本。但是,PHP脚本需要运行一个参数(在测试脚本时通常会通过命令行传递该参数)。 页面加载时,每次运行脚本时如何传递此参数? 问题答案: 大概是在命令行中按以下方式传递参数: …然后通过脚本访问它们: 通过HTTP传递参数(通过Web访问脚本)时,您需要做的是使用查询字符串并通过$ _GET超全局变量访问它们: 转到http://yourdomain.

  • 我在建一个拉威尔的网站。我希望提交的表单数据运行查询,并将结果插入表格式。我正在使用oracle DB,并已将其连接到Laravel。另外,我已经创建了表单,查询结果正确。我不能做的是将结果成功地传递到表中。 我的文件如下: > Routes.php(或web.php较新的laravel版本): 搜索。刀身php(带有post方法的表单) 我的控制器(NewController.php)运行查询。

  • 我想知道如何上传一个图像通过API邮递员在拉威尔和保存到我的数据库,这是phpMyAdmin。当我尝试在postman中运行代码时,会显示以下内容: 这是我目前的代码: 横幅积垢控制器: 横幅型号: 任何关于我做错了什么的想法,我想现在就得到这个,因为我有很多表格需要创建。 希望有人能帮助我开始。谢谢。