如何在 laravel 中将多个方法或控制器调用到同一路由

How to call multiple methods or controllers to a same route in laravel

在控制器代码下方找到两个方法,并建议我如何在同一个路由中调用这两个方法,或者我是否必须为同一个页面(路由)创建两个不同的控制器。

class TicketController extends Controller
{
    public function show(){
    $results=Whmcs::GetTickets([

    ]);
    return view('clientlayout.main.index',compact('results'));
}

    public function set(){
    $test=Whmcs::GetInvoices([

    ]);
    return view('clientlayout.main.index',compact('test'));
}

}

路由文件:

  Route::get('clientlayout.main.index','TicketController@show');

  Route::get('clientlayout.main.index','TicketController@set');

在 blade 文件中找到代码,在 运行 执行此操作后我收到错误消息

undefined index:Results.

  @foreach($results['tickets']['ticket'] as $key)

  {{$key['subject']}}
  @endforeach



  @foreach($test['invoices']['invoice'] as $value)

  {{$value['firstname']}}
  @endforeach

当我 运行 这两个 foreach 循环在不同的 blade 文件中时它执行正确,但我需要在同一个文件中查看这两个结果。

如何在同一索引页中同时查看机票和发票?

将两个控制器合并为一个,并在一个方法中执行两个查询:

class InvoiceTicketController extends Controller
{
    public function show(){
        $tickets = Whmcs::GetTickets([]);
        $invoices = Whmcs::GetInvoices([]);
        return view('clientlayout.main.index',compact('tickets', 'invoices'));
    }
}

然后更新其中一个路由以使用组合控制器:

Route::get('clientlayout.main.index','InvoiceTicketController@show');

您可以通过以下方式访问 blade 文件中的 $tickets$invoices collections:

@foreach($tickets as $ticket)
  {{ $ticket->subject }}
@endforeach

@foreach($invoices as $invoice)
  {{ $invoice->firstname }}
@endforeach