2016-12-14 18 views
1

私の質問は、Voyager管理パネルのコントローラに関連しています。たとえば、マイグレーションのあるテーブルを作成しました。その名前は "グループ"でしたし、BREADを作成してVoyagerのメニューに追加しました。Voyager - laravel admin panel

私は\ resources \ views \ vendor \ voyagerに "groups"という名前のフォルダを作成しました。その後、ビューを上書きするために2つのファイルを作成しました。

しかしコントローラがどこにあるのかわかりません。私はphp artisan make:controller GroupsControllerでコントローラを作成しました。私はこのコントローラーがボイジャーのコントローラーに関連していないと思います。

インデックスを変更したり、メソッドを作成したり、一部のデータをコントローラのビューに渡したいのですが、どこにあるのかわかりません。

\ vendor \ tcg \ voyager \ src \ Http \ ControllersにVoyagerGroupsController.phpという名前のコントローラーを作成しましたが、classとindexメソッドを作成すると機能しません。

「グループ」のコントローラーを作成し、データをビューに渡すにはどうすればよいですか?

答えて

3

Voyagerでテーブルを作成するたびに、Voyagerはそのデータ型を呼び出します。 Voyagerユーザーは、私たちが作成したすべてのテーブル/データタイプに対して、コントローラVoyagerBreadController.phpを** vendor \ tcg \ voyager \ src \ Http \ Controllers **に置いています。

例えば、というブランド名のテーブルを作成するとします。 LaravelはコントローラーVoyagerBreadControllerを使用します。

しかし、このコントローラを使用しているか、またはこのコントローラを指しているルートはどこですか。ルートはファイルベンダー\ 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の間にあります私たちのテーブル/データ型のためのルートを再構築します。

ここでに上書きして、特定の操作に自分のコントローラを使用するルートを作成したい場合は、たとえば、ブランドのルートを作成してURLを作成したいとします。私は単純に(すなわちライン37の後に)上記のコードの下に次の行(私のルート)を追加することによってこれを行うことができます。

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

か、ルート\ web.php後に以下の行を追加して同じことを行うことができますボイジャー:: routes();

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

@Milad、それがあなたを助けた場合、解答として受け入れる –

0

routes/webで述べたようにRoute :: get( 'groups'、 'GroupsController @ index')を追加しました。この

ルートなど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メソッドが動作しないでこれらの行を追加しました。このエラーはGroupsController.phpライン23に ErrorExceptionが表示されます: は非オブジェクト

のプロパティを取得しようとすると、私はControlles getSlugを(上書きした後、推測)仕事と私は手動で $スラグをスラグを設定する必要はありません= 'グループ';

関連する問題