如何在Laravel中使用两个`with`?

时间:2016-11-07 21:59:04

标签: laravel laravel-5 laravel-5.3

我尝试使用with

在Laravel中显示两条Flash消息
return redirect('cabinet/result')->with('user', $client->unique_code)->with('fio', $client->name.' '.$client->secondname. ' '.$client->patronymic);

然后我将其显示为:

{{ session('fio') }}  {{ session('unique_code') }}

它没有显示任何内容

3 个答案:

答案 0 :(得分:3)

首先,当您使用方法'with'将数据传递给视图时,它不会存储在会话中,它只是作为一个变量提供,该视图与重定向后加载的视图具有相同的名称的地方。

您有两种选择:

将一组键值对传递给视图

您可以将一组数据传递给视图:

return view('greetings', ['name' => 'Victoria', 'last_name' => 'Queen']);

正如您在{root} /vendor/laravel/framework/src/Illuminate/View/View.php

中实现该方法的方式所见
/**
 * Add a piece of data to the view.
 *
 * @param  string|array  $key
 * @param  mixed   $value
 * @return $this
 */
public function with($key, $value = null)
{
    if (is_array($key)) {
        $this->data = array_merge($this->data, $key);
    } else {
        $this->data[$key] = $value;
    }

    return $this;
}

该方法接受键值对或数组。此数组的所有键都将在视图中可用,该视图将作为具有相同名称的php变量加载(当然,您需要将美元符号附加到视图中的调用)。因此,在“问候”视图中,您将检索它们:

$variable1 = {{ $name }}

$variable2 = {{ $last_name }}

将一组键值对闪烁到下一个会话

您可以使用{root} /vendor/laravel/framework/src/Illuminate/Session/Store.php中的flashInput方法执行相同的操作:

/**
 * Flash a key / value pair to the session.
 *
 * @param  string  $key
 * @param  mixed   $value
 * @return void
 */
public function flash($key, $value)
{
    $this->put($key, $value);

    $this->push('_flash.new', $key);

    $this->removeFromOldFlashData([$key]);
}

你会这样做:

$request->session()->flashInput('flashData' => ['key1' => value1, 'key2' => value2]);

这里的区别在于数据不能作为加载视图的变量。相反,它们将存储在会话中的关联数组中,您将以这种方式检索存储的值:

$variable1 = {{ session('flashData['key1']) }}
$variable2 = {{ session('flashData['key2']) }}
资源

如果您认为这解决了您的问题,请将答案标记为已接受:)

答案 1 :(得分:1)

首先确保您的查询返回数据。
在我的项目中,我用简单的方法来做。

$user = $client->unique_code; //now user has the code
$fio = $client->name.' '.$client->secondname. ' '.$client->patronymic;
//please make sure this returns your indented result.

return redirect('cabinet/result')->with('user', $user)->with('fio',$fio );

我希望这会奏效,

答案 2 :(得分:1)

试试这段代码:

$user = 'user';
$fio = 'fio';

return redirect('cabinet/result')
           ->with('user', $user)
           ->with('fio', $fio);

对于视图:

{{ Session::get('user') }} {{ Session::get('fio') }}