添加令牌以查看 make laravel

Adding token to view make laravel

我有 link 这样的令牌:

<a href="{{ URL::to('/users/submit/' . $id->id) }}?_token={{ csrf_token() }}">Submit New</a>

产生 url:

http://example.com/users/submit/20?_token=fpf0LwHyf0JGBg0fnixjRFo1B5GgUM3RDp6dVgUU

现在在我的控制器中我添加了检查数据库中的一列的条件,并基于此 returning 不同的视图。

public function wrongIdSubmit($Id) {

    $submits = self::$user->where('submit_id', $Id)->first();

    if (!$txid) {
        App::abort(404);
    }       

    if($submits->submit_id > 3) {
        return View::make('fail',[              
            'submits' => $submits               
        ]);         
    }

    else {
        return View::make('submit',[            
            'submits' => $submits           
        ]);
    }
}

我的问题是如何将此标记 ?_token={{ csrf_token() }} 与 $submits 变量一起传递给 return View::make?因为就像现在我有错误

production.ERROR: Illuminate\Session\TokenMismatchException

您必须将令牌添加到表单本身。您不能在 URL 中传递它。将以下内容添加到您的表单中:

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

Laravel 提供 returns 直接用 token 输入隐藏字段的功能。

csrf_field()

它将生成一个 HTML 包含 CSRF 令牌值的隐藏输入字段。

所以你可以这样试试:

return View::make('fail',[              
   'submits' => $submits,
   'token' => csrf_field()               
]); 

并且在视图中只打印:

{!! $token !!}

或者直接也喜欢:

{!! csrf_field() !!}

输出如下:

<input type="hidden" name="_token" value="*****" />

祝你好运..