【问题标题】:Passing parameters through the route laravel通过路由 laravel 传递参数
【发布时间】:2017-05-10 06:44:31
【问题描述】:

当我提交表单时,我试图通过路由传递一个 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,它正确显示了 url 中的 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 一起插入到第二个表中的控制器。

当我提交表单时出现错误

未定义的方法notification()

请帮忙

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

【问题讨论】:

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


    【解决方案1】:

    我不知道有一个 notification() 助手。你确定要打这个电话吗

    ... 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 可能会在您尝试将数据传递给您的视图时帮助您。

    【讨论】:

    • 当我做... route('submit.lmo_list', ['id' =&gt; $notification-&gt;id]) 它说未定义变量:通知我有一个通知表和一个notification_type_a 表。通知表有很多 notification_type_a。所以我试图将通知 id 作为外键传递给 notification_type_a 表。
    • 我很确定最初的“未定义方法通知()”是由于您认为没有上述方法。您是否将通知传递到您的视图中?
    • 我不确定我是否做到了。我刚开始使用laravel,很抱歉这么笨。你能详细说明一下吗?谢谢
    • 返回视图('Notification.notification_for_lmo', compact($notification));我以这种方式将通知传递到视图上。
    • 很高兴我能帮上忙
    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 2020-04-03
    • 2014-01-14
    相关资源
    最近更新 更多