2016-12-14 12 views
1

Мой вопрос связан с контроллером в панели администратора Voyager. Например, я создал таблицу с миграцией. Это имя было «группами», а затем я создал BREAD и добавил его в меню в Voyager.Voyager - панель администратора laravel

Я создал папку, в которой он называется «группами» в \ resources \ views \ vendor \ voyager, и затем я создал два файла, чтобы переопределить представление.

Но я не знаю, где находится контроллер. Я создал контроллер с помощью php artisan make: controller GroupsController. Я думаю, этот контроллер не связан с контроллерами voyager.

Я хочу изменить индекс или метод создания и передать некоторые данные в представления в контроллере, но я не знаю, где он находится.

Я создал контроллер в \ vendor \ tcg \ voyager \ src \ Http \ Controllers, что это имя VoyagerGroupsController.php, но когда я создаю в нем метод класса и индекса, он не работает.

Как создать контроллер для «групп» и передать данные в представление?

ответ

3

Всякий раз, когда мы создаем таблицу в voyager, Voyager называет ее типом данных. И для всех созданных нами таблиц/типов данных пользователи Voyager только один контроллер VoyagerBreadController.php, расположенный в ** поставщике \ tcg \ voyager \ src \ Http \ Controllers **.

Например, если я создаю таблицу с именем торговых марок. 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. 
     } 

В моей версии, эти линии между линией № 29 до 37.

Как вы можете видеть, выше код выборка всех наших типов данных и создавая resouce для наших таблиц/типов данных.

Теперь, если я хочу переопределить этот маршрут и создать маршрут для использования моего собственного контроллера для определенного действия. Например, если я хочу создать маршрут для брендов/создать URL-адрес. Я могу это сделать, просто добавив следующую строку (мой маршрут) ниже выше кода (т.е. после строки 37):

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

или вы можете сделать то же самое, добавив следующую строку в маршрутов \ web.php после Voyager :: маршруты();

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

@Milad, принимайте ответ как решение, если оно вам помогло –

0

Я добавил Route :: get ('groups', 'GroupsController @ index'), как вы сказали в маршрутах/Интернете.PHP

как этот

Маршрут :: группы ([ 'префикс' => 'администратора'], функция() { Voyager :: маршруты();

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

});

и добавил эти строки в методе индекса

индекс общественных функций (Request $ запрос) {

// 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() не работает, и я должен установить пробковые вручную $ пробковыми = «группы»;