如何将变量从中间件传递到控制器或执行此类中间件的路由?我看到了一些帖子,内容是在请求中添加它,如下所示:

$request->attributes->add(['key' => $value);

还有人建议使用flash:

Session::flash('key', $value);

但我不确定这是否是最佳实践,或者是否有更好的方法来做到这一点?以下是我的中间件和路径:

namespace App\Http\Middleware;

use Closure;

class TwilioWorkspaceCapability
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $workspaceCapability = new \Services_Twilio_TaskRouter_Workspace_Capability("xxxxx", "xxxx", "xxxx");
        $workspaceCapability->allowFetchSubresources();
        $workspaceCapability->allowDeleteSubresources();
        $workspaceCapability->allowUpdatesSubresources();
        $token = $workspaceCapability->generateToken();
        //how do I pass variable $token back to the route that called this middleware
        return $next($request);
    }
}

Route::get('/manage', ['middleware' => 'twilio.workspace.capability', function (Request $request) {
    return view('demo.manage', [
        'manage_link_class' => 'active',
        'twilio_workspace_capability' => //how do I get the token here?...
    ]);
}]);

仅供参考,我之所以决定使用中间件,是因为我计划在令牌的生命周期中缓存令牌,否则这将是一个可怕的实现,因为我会在每次请求时请求一个新令牌.

推荐答案

像这样传递键值对

$route = route('routename',['id' => 1]);

还是你的行动

$url = action('UserController@profile', ['id' => 1]);

可以使用with向视图传递数据

 return view('demo.manage', [
    'manage_link_class' => 'active',
    'twilio_workspace_capability' => //how do I get the token here?...
]) -> with('token',$token);

在你的中间件中

 public function handle($request, Closure $next)
 {
    $workspaceCapability = new .....
    ...
    $request -> attributes('token' => $token);

    return $next($request);
 }

在控制器中

 return Request::get('token');

Laravel相关问答推荐

为什么只删除了最后一个Like,而没有删除选中的?

Laravel:通过数据透视表数据限制多对多Eager 加载

如何使用 Laravel 进行继承

Laravel本地化错误:"setlocale():参数#1($category)的类型必须是int,给定的是Illuminate\Http\Request"

我的共享主机上的每个帖子请求都出现 503 服务不可用

(1/1) ErrorException ReflectionFunction::__construct() ex

RuntimeException 未安装 Zip PHP 扩展

集成测试模拟外观与注入模拟

调用未定义的函数 App\Http\Controllers\ [函数名]

需要 Vagrant 环境或目标机器

Laravel 使用 Storage::put 生成唯一 ID

如何更改 Handlebars.js 的默认分隔符?

如何在 Laravel 5.1 中为Electron邮件添加标题

Laravel 全部返回 ID 变为 0

在 Laravel 中,如何获取 *only* POST 参数?

Laravel 5 - 判断日期是否是今天

Laravel 在域和子域中共享 cookie 检测问题

在 Laravel 中软删除父记录时如何软删除相关记录?

Laravel 5 Auth注销不起作用

你如何在 Laravel 5.3 的新通知服务生成的Electron邮件中添加图像?