【问题标题】:Passing argument from controller to controller not working将参数从控制器传递到控制器不起作用
【发布时间】:2015-11-12 00:37:36
【问题描述】:

Aloha,我正在制作一个锻炼管理器,您可以在其中的仪表板中显示您最近的 5 次锻炼。我为每个锻炼设置了一个表格,允许用户删除其中的任何一个。这是仪表板中的form

{!! Form::open(['route' => ['dashboard.workout.destroy', $workout->id], 'style' =>'display:inline-block;', 'method' => 'DELETE']) !!}

这个路由会在WorkoutController.php

中调用这个方法
public function destroy($id, Request $request)
{
    $workout = Workout::findOrFail($id);
    $workout->delete();
    $message = "Workout deleted successfully!";

    return redirect()->route('dashboard.index', ['message' => $message]);
}

并且这个路由会在DashboardController.php

中调用这个方法
public function index($message = null)
{
  $user = Auth::user();

  // Workouts
  ...

  // Inbodies
  ...

  // Measures
  ...

  return view('dashboard.index', compact('user','workoutsDesc','workouts','lastInbody','inbodies','measures','lastMeasure','message'));
}

问题是我正在尝试将变量 $message 从 WorkoutController 传递到 DashboardController 以在删除锻炼后显示成功警报,但我没有知道该怎么做。我试过了:

return redirect()->action('Dashboard\DashboardController@index', [$message]); 

return redirect()->action('Dashboard\DashboardController@index')->with('message', $message);

return redirect()->route('dashboard.index', $message);

但我仍在努力寻找方法。

【问题讨论】:

    标签: php redirect controller laravel-5 arguments


    【解决方案1】:

    首先,来自Laravel 5.1 Documentation
    If your route has parameters, you may pass them as the second argument to the route method
    由于消息不是您路线的参数,因此您不能传递它。一个可能的解决方案是Flashing data。如果会话具有该键并包含一个值,请检查下一个控制器,然后将其添加到变量并传递给视图。
    希望这行得通。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多