2016-09-23 1 views
0

新しいプロジェクトでLaravel 5.2 Backpackを使用しています。選択した値に応じて、select_from_arrayフィールドをselect_from_arrayフィールドに表示します。それをする方法を知らない。これで私を助けてください。これは私が私がデータを取得するためのIDを使用することができますsubcategories()で選択されたオプションのIDを望むlaravelを使用してselect_from_arrayフィールドから選択した値を取得します。5.2 Backpack

Controller.php

public function __construct() 
{ 
    if (Request::segment(3) == 'create') { 
     $parentField1 = [ 
     'name' => 'cat_id', 
     'label' => 'Category', 
     'type' => 'select_from_array', 
     'options' => $this->categories(), 
     'allows_null' => false, 
     ]; 
     $parentField = [ 
      'name' => 'subCat_id', 
      'label' => 'SubCategory', 
      'type' => 'select_from_array', 
      'options' => $this->subcategories(), 
      'allows_null' => false, 
     ]; 

     array_unshift($this->crud['fields'], $parentField1,$parentField); 

    } 

public function categories() 
{ 
    $cat = Request::get('cat_id'); 

    $currentId = 0; 
    if (Request::segment(4) == 'edit' and is_numeric(Request::segment(3))) { 
     $currentId = Request::segment(3); 
    } 

    $entries = Category::where('translation_lang', config('app.locale'))->where('parent_id',0)->orderBy('lft')->get(); 
    if (is_null($entries)) { 
     return []; 
    } 

    $tab = []; 
    $tab[0] = 'Root'; 
    foreach ($entries as $entry) { 
     if ($entry->id != $currentId) { 
      $tab[$entry->translation_of] = '- ' . $entry->name; 
     } 
    } 
    return $tab; 
} 

public function subcategories() 
{ 
    $currentId = 0; 

    if (Request::segment(4) == 'edit' and is_numeric(Request::segment(3))) { 
     $currentId = Request::segment(3); 
    } 

    $entries = Category::where('translation_lang', config('app.locale'))->where('parent_id','!=' ,0)->orderBy('lft')->get(); 

    if (is_null($entries)) { 
     return []; 
    } 

    $tab = []; 
    $tab[0] = 'Root'; 
    foreach ($entries as $entry) { 
     if ($entry->id != $currentId) { 
      $tab[$entry->translation_of] = '- ' . $entry->name; 
     } 
    } 
    return $tab; 
} 

私のコードです。

+0

__constructメソッドに '}'がありません。 –

答えて

0

私はあなたにとって最良の方法は、両方の選択を含むこの特定の目的のカスタムフィールドタイプを作成することだと思います。 this procedureに従ってください。 select2.blade.phpファイルから開始し、目的を達成するために必要なjavascriptを追加します(最初のselect2の変更イベントでは、次のselect2のオプションを変更します)。

+0

実際には、私のdatabseでは、カテゴリとサブカテゴリは同じテーブルに保存されています。関係を書き込む方法はわかりません。私がselect2を使うとき、彼らは関係関数を求めて.....このことを助けてください。 –

+0

私は理解しています。 select2フィールドは関係なしでは機能しません。正直なところ、Laravelでは関係が必要です。それ以外の場合は、Laravelを使用しないでください。関係については、こちらのドキュメント(https://laravel.com/docs/5.3/eloquent-relationships)で知ることができますが、個人的にはLaracastで月額9ドルを使うことをお勧めします。あなたはいくつかのビデオを見て、本当に簡単にラーヴェルを学ぶことができます。これは特に、多くのコア概念と関係(ビデオ8)を説明しています:https://laracasts.com/series/laravel-5-from-scratch – tabacitu

関連する問題