【问题标题】:How to pass $variable to multiple views from same controller function in laravel如何将 $variable 从 laravel 中的同一控制器函数传递给多个视图
【发布时间】:2020-07-16 12:18:14
【问题描述】:

我有一个 PayrollController,其中包含 paySlipList() 函数。在 paySlipList() 我通过 $request 对象获得 $salary_year 和 $salary_month 。我制作了包含一些模型逻辑的 $payroll_lists 变量,并将其传递给视图页面以显示员工信息。我的问题是,如何将 $payroll_lists 变量传递给多个视图。我用谷歌搜索并找到了 View Composer 的解决方案,但在 View Composer 的 compose() 方法中我无法调用 Request 类。我的 $salary_year 和 $salary_month 是从我的视图页面接收的,因此有必要在 compose() 方法中接收它或如何从刀片视图调用 compose() 方法。请告诉我一些解决方案。下面是我的控制器功能。

public function paySlipList(Request $request)
{
    $payroll_lists = collect();
    $salary_year = null;
    $salary_month = null;
    
    $salary_year = $request->get('salary_year');
    $salary_month = $request->get('salary_month');
    $payroll_lists = Payroll::where('gross_salary', '!=', 'null')
        ->where('salary_year', $salary_year)
        ->where('salary_month', $salary_month)
        ->where('is_payroll', '=', '1')
        ->where('net_salary', '<>', '0')
        ->with('employee')
        ->get();
    if(count($payroll_lists) == 0)
    {
        return redirect()->route('payroll.payslip.index')
        ->with("error", 'No payroll generated for selected year or month!');
    }
    
    return view('backend.payroll.payslip_list',
        compact('payroll_lists','salary_year','salary_month'));
}

这是刀片视图,

<form action="{{ URL::route('payroll.payslip.sendPaySlipMail') }}" method="post">
    @csrf
    <input type="hidden" name="salary_year" value="{{$salary_year}}">
    <input type="hidden" name="salary_month" value="{{$salary_month}}">
    <div class="box-header">
        <div class="box-tools pull-right">
            <button type="submit">Send Payslips to Emails</button>
        </div>
    </div>    
</form>

任何帮助将不胜感激!

【问题讨论】:

  • 传递给会话
  • 您将错误的名称传递给compact ...检查文档中的compact 函数.. 我建议在您知道它的作用和它的缺陷之前不要使用它(就像在 PHP v 7.3.0 之前默默地不包括丢失的表格符号)......还描述了你实际想要做的事情,你描述的你想做的事情很可能就像一个 XY 问题
  • 我知道如何使用compact(),这是一个输入错误,我已经编辑了一个问题,抱歉

标签: laravel


【解决方案1】:
$data = Users::find($id);

$view = [

           view('users.index', compact('data')),
            view('users.members', compact('data')),
            view('users.admin', compact('data')),
        ];

        return $view;

【讨论】:

  • 虽然此代码可能会解决问题,但 including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的答案添加解释并说明适用的限制和假设。
  • 可以添加多个视图。
  • 我不能像你建议的那样添加多个视图
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-07
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多