我有發票控制器,它看起來像這樣如何Laravel5使用控制器的另一個控制器內的服務
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;
use App\Event;
use App\Employee;
use App\Invoice;
use Mail;
use View;
class ViewinvoiceController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function getIndex($order_id)
{
$id=$order_id;
$invoicedata=Invoice::where('Id',$id)->get();
$html22 = View('viewinvoice')->with(array('invoicedata'=>$invoicedata))->render();
require_once(app_path().'/libs/html2pdf/html2pdf.class.php');
$html2pdf = new \HTML2PDF('P','A4','en',true,'UTF-8',array(0, 0, 0, 0));
// $html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->WriteHTML($html22);
$html2pdf->Output('Invoice.pdf');
}
}
我想用這個控制器的其它控制器,它看起來像這樣
class CollectionController extends Controller
{
public function __construct(){
$this->middleware('role:collector'); // replace 'collector' with whatever role you need.
}
public function getInvoice($order_id){
//Here I have to write the logic of getting the invoice from the invoiceController
}
}
我用Google搜索,發現了一個辦法是寫一個服務來獲得發票,
我可以把它作爲一個正常的類作爲服務,但我不知道什麼在laravel正道5
任何建議
控制器的類名具有相同名稱的文件名。所以你將不得不使用兩個不同的控制器文件來處理不同的控制器。 –
@AjitKumarSingh你可以請詳細說明這一點,實際上Laravel直接在另一個控制器中使用控制器並不是正確的方式,因爲它爲'Injection'打開方式,我讀了一些使用php 5的地方。可以這樣做,或者我們可以在Laravel中編寫服務,但我不知道其中的任何一個如何實現 – Vikram
這是發生的情況,當您調用控制器時,如果存在控制器,則會檢查route.php。如果是,則調用與調用的控制器名稱具有相同名稱的文件。您的控制器的類名和文件名應該相同,才能被調用。但是,如果你想使用另一個類,你將不得不在其他類中創建對象(但是這是用java編寫的,我沒有在php中使用它,所以不知道)。 –