2017-08-29 76 views
-1

這是ContactsController爲什麼我不能在控制器內使用模型?

<?php 

namespace App\Http\Controllers; 

use App\Contact; 
use Illuminate\Http\Request; 

class ContactsController extends Controller 
{ 
    . 
    . 
    . 
    public function edit($id) 
    { 
     $contact = Contact::find($id); 
     print_r(App\Group::find(1)); 
     return view('contacts.edit'); 
    } 
    . 
    . 
    . 
} 

Contact.phpGroup.php模型在app文件夾已經創建。問題是我可以在.blade.php文件中使用App\Group::find(1),但我不能在控制器的方法中使用它。我的代碼報告以下錯誤

級「應用程序\ HTTP \控制器\集團未發現

我也試過print_r(Group::find(1));同樣的錯誤報道。

感謝

+2

將您的模型添加到此控制器。在calss之前只寫 使用App \ Contact;如果您的模型位於應用程序文件夾中,則請提供您的模型的路徑。 –

+0

@KuldeepMishra我知道這可行,但爲什麼在'.blade.php'文件中我不需要添加'使用App \ Group'? – Drupalist

+0

您不應該在您的視圖中訪問模型。你的控制器應該傳遞你的視圖他們需要的數據。 –

回答

1

添加use App\Group;到文件的頂部導入類。

+0

我知道這可行,但爲什麼在'.blade.php'文件中我不需要添加'使用App \ Group'? – Drupalist

+0

因爲'.blade'文件是在全局命名空間中構建的。因此,當您在視圖中逐字引用「App \ Group」時,它可以找到模型。然而,當你在你的控制器中,並且你引用這個模型時,它會相對於當前的命名空間查找它 - 從字面上看,就是「App \ Http \ Controllers \ Group」。所以你有兩個選擇 - 在頂部添加'use'以告訴PHP使用另一個命名空間,或者使用前綴斜槓如'\ App \ Group'來告訴PHP從根名稱空間獲取它。 – Dwight

1

添加以下行後使用應用程序\聯繫

使用App \集團

+0

我知道這可行,但爲什麼在'.blade.php'文件中我不需要添加'使用App \ Group'? – Drupalist

1

您可以使用use Namespace\Model;導入模型您也可以使用完全限定名稱空間,因此您不必將它們導入到文件頂部。您可以通過在名稱空間前添加反斜槓來使用完全限定名稱空間。您可以在刀片模板中執行此操作。

{{ \Namespace\Model::someStaticFunction() }} 

你可以這樣做,或者你可以使用Facades,也許你在混合它們。

相關問題