2016-12-14 126 views
1

我的問題與Voyager管理面板中的控制器有關。例如,我創建了一個包含遷移的表。它的名字是「groups」,然後我創建了BREAD並將其添加到Voyager的菜單中。Voyager - laravel管理面板

我在\ resources \ views \ vendor \ voyager中創建了一個名爲「groups」的文件夾,然後我創建了兩個文件來覆蓋該視圖。

但我不知道控制器在哪裏。我用php artisan make創建控制器:Controller GroupsController。我想這個控制器與voyager控制器沒有關係。

我想改變索引或創建方法,並將一些數據傳遞給控制器​​中的視圖,但我不知道它在哪裏。

我在\ vendor \ tcg \ voyager \ src \ Http \ Controllers中創建了一個名爲VoyagerGroupsController.php的控制器,但是當我在其中創建類和索引方法時,它不起作用。

如何爲「組」創建控制器並將數據傳遞給視圖?

回答

3

每當我們在旅行者中創建一個表時,航海家號稱它爲數據類型。對於我們創建的所有表/數據類型,Voyager用戶只能使用位於** vendor \ tcg \ voyager \ src \ Http \ Controllers **的一個控制器VoyagerBreadController.php

例如,如果我創建了一個名爲的品牌。 Laravel將使用控制器VoyagerBreadController

但是在哪裏使用或指向此控制器的路線。路線位於文件vendor \ tcg \ voyager \ routes \ voyager.php。在這個文件中,找到以下行:

try { 
      foreach (\TCG\Voyager\Models\DataType::all() as $dataTypes) { 
       Route::resource($dataTypes->slug, $namespacePrefix.'VoyagerBreadController'); 
      } 
     } catch (\InvalidArgumentException $e) { 
      throw new \InvalidArgumentException("Custom routes hasn't been configured because: ".$e->getMessage(), 1); 
     } catch (\Exception $e) { 
      // do nothing, might just be because table not yet migrated. 
     } 

在我的版本,這些線路都是37

號線29之間。如你所看到的,上面的代碼獲取我們所有的數據類型和創建爲我們的表/數據類型提供資源路徑。

現在,如果我想覆蓋此路線並創建一個路徑使用我自己的控制器進行特定操作。例如,如果我想爲品牌/創建網址創建路線。我可以用(37行之後即)只需添加以下代碼上方以下行(我的路線)做到這一點:

Route::get('brands/create', function(){return 'abc';})->name('brands.create'); 

,或者您可以通過在路徑\ web.php後添加以下行做同樣的旅行者::路線();

Route::get('brands/create', function(){return 'abc';})->name(**'voyager.brands.create'**); 
+0

@Milad,接受答案作爲解決方案,如果它幫助你 –

0

我添加了Route :: get('groups','GroupsController @ index'),正如你在routes/web中所說的那樣。PHP

這樣

路線::組([ '前綴'=> '管理員'],函數(){ 旅行者::路線();

Route::get('groups', '[email protected]'); 

});

和索引方法添加這些行

公共功能指數($申請要求){

// GET THE SLUG, ex. 'posts', 'pages', etc. 
    $slug = $this->getSlug($request); 

    // GET THE DataType based on the slug 
    $dataType = DataType::where('slug', '=', $slug)->first(); 

    // Check permission 
    Voyager::can('browse_'.$dataType->name); 

    // Next Get the actual content from the MODEL that corresponds to the slug DataType 
    $dataTypeContent = (strlen($dataType->model_name) != 0) 
     ? app($dataType->model_name)->latest()->get() 
     : DB::table($dataType->name)->get(); // If Model doest exist, get data from table name 

    $view = 'voyager::bread.browse'; 

    if (view()->exists("voyager::$slug.browse")) { 
     $view = "voyager::$slug.browse"; 
    } 

    return view($view, compact('dataType', 'dataTypeContent')); 

} 

但getSlug方法不起作用。這個錯誤將顯示 ErrorException在GroupsController.php線23: 試圖讓

我重寫Controlles getSlug()不工作後猜測非對象的屬性,我必須設置蛞蝓手動 $蛞蝓= 「基團」;