Как передать переменные из промежуточного программного обеспечения в контроллер или маршрут, который выполняет такое промежуточное программное обеспечение? Я видел сообщение о добавлении его к следующему запросу:
$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?...
]);
}]);
FYI причина, по которой я решил использовать промежуточное ПО для этого, заключается в том, что я планирую кэшировать токен для его жизненного цикла, иначе это было бы ужасной реализацией, так как я бы запросил новый токен по каждому запросу.