通过路线laravel传递参数

时间:2017-05-10 06:44:32

标签: mysql laravel-5 foreign-keys parameter-passing

我正在尝试在提交表单时传递路径的ID。 当我传递像

这样的硬编码ID时
<form class="form-horizontal" role="form" method="POST" action="{{ route('submit.lmo_list', ['id'=>7]) }}">

它有效。该表将外键id显示为7.

当我从用户表中传递id

<form class="form-horizontal" role="form" method="POST" action="{{ route('submit.lmo_list', ['id'=>auth()->user->id]) }}">

这也有效,数据库中的id字段显示用户ID。

我想从通知表中传递一个id,当我尝试做类似

的事情时
<form class="form-horizontal" role="form" method="POST" action="{{ route('submit.lmo_list', ['id'=>notification()->id]) }}">

它会抛出一个错误,说找不到方法通知。

通知控制器

public function create(Request $request)
{
    $notification = Notification::create([
        'unit_code'=>$request->unit_code,
        'unit_name'=>$request->unit_name,
        'project_title'=>$request->project_title,
        'project_ref_number'=>$request->project_ref_number,
        'storage_location'=>$request->storage_location,
        'keeper_name'=>$request->keeper_name,
        'user_id'=>Auth::user()->id
        ]);

        return redirect()-> route('show.lmo_form', $notification->id);

}

这里我在提交表单后传递带有url的通知ID,并在网址中正确显示了id。

通知lmo控制器

 public function create(Request $request, $notification_id)
{


    /*this loop is because im adding rows dynamically to the table*/
    $count = count($request->input('lmo_name'));

        for ($i=0; $i<$count; $i++){

        $data = AddLmoNotification::create([
        'lmo_name'=>$request->lmo_name[$i],
        'lmo_risk_level'=>$request->lmo_risk_level[$i],
        'lmo_quantity'=>$request->lmo_quantity[$i],
        'lmo_volume'=>$request->lmo_volume[$i],
        'notification_id'=>$notification_id
        ]);
    }

        return redirect()->route('show.go_to_notification');
}

这是将数据与第一个表的id一起插入第二个表的控制器。

当我提交表单时,我收到错误

  

未定义的方法通知()

请帮助

如果您需要查看任何其他文件,例如模型和数据库迁移,请告诉我。

1 个答案:

答案 0 :(得分:1)

我不知道通知()帮助器。你确定打算打这个电话吗

... route('submit.lmo_list', ['id' => notification()->id]) ...

而不是

... route('submit.lmo_list', ['id' => $notification->id]) ...

将变量传递给路由函数? 因为那可能只是找不到的功能。 如果这不能解决您的问题,您传递到视图中的变量列表可能有助于了解最新情况。 (请提供返回视图的控制器方法),laravel生成的完整错误消息+堆栈可能会有很大帮助。

我建议您将通知传递给您的观点

return view('Notification.notification_for_lmo')
    ->with('notification', $notification);

您现在可以通过视图中的$notification访问您的通知,并按照上面的建议应用路线方法。

在尝试将数据传递到您的观看时,

This可能会帮助您。