2017-06-03 16 views
2

テーブルstatuses(カラムid,)があり、このテーブルに基づいて動的に選択リストを表示する必要があります。 マイモデル:Laravel Bladeでダイナミックに生成されるドロップダウンを作成する方法

namespace App; 

    use Illuminate\Database\Eloquent\Model; 

    class Statuses extends Model 
    { 
     protected $table = "CaseStatus"; 
    } 

コントローラー:

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Statuses; 
class StatusesList extends Controller 
{ 
    public function getstatuseslist() { 
     $list = Statuses::all(); 
     return view('forms.statuses')->with('data', $list); 
    } 
} 

statuses.blade.php

<select name="Statuses"> 
@foreach ($data as $page) 
<option value="{{ $page->ID }}">{{ $page->StatuseName }}</option> 
@endforeach 
</select> 

ルート:

Route::any('/list/statuses','[email protected]'); 

私は開いたURL http://myproject/list/statusesだ場合 - それは正常に動作し、私はドロップダウンリストを参照してください。 しかし、私は別のテンプレート内のフォームでの私のstatuses.blade.php含まれている場合:

@include('forms.statuses') 

を、私はそれを正しく含める方法

"Undefined variable data". 

エラーが出ますか? Laravelのバージョンは5.4です。

+1

@include( 'forms.statuses')を置いた場所は、どの.bladeファイルですか? –

+0

私はそれを私のviews \ forms \ dialog-mainform.blade.php –

+0

に含めています。その場合は戻りビュー( 'forms.dialog-mainform') - >( 'data'、$ list);をコールする必要があります。 –

答えて

2

最初は、あなたがテーブルstatusesを持っている場合は、あなたのモデル名がstatusである必要があり、生のではなく、テーブルを取得するためのものです。

別のブレードで機能していない機能は、別のブレードコントローラがモデルに接続されていないため、求めている情報がどこにあるのかわからないことが原因です。その問題を簡単に解決するには、モデルコードを

public function getstatuseslist() { 
     $list = Statuses::all(); 
     return view('your_other_view')->with('data', $list); 
    } 

に追加してください。

2番目のコントローラでもモデルを呼び出すことを忘れないでください。

use App\Statuses; 

その後、2番目のブレードでも正常に動作します。

0

あなたが定義したコントローラーメソッドからのパスでは、$dataは、'forms.statuses'ビューにのみ渡されると思います。

'forms.statuses'を含む他の「親」ビューでこのデータを使用する場合は、その「親」ビューを返すコントローラで再度データを渡す必要があります。

多くのビューで永続化できる方法があります。詳細は、「ビューコンポーザー」を参照してください。ここでLaravelドキュメントで作曲を表示するためのリンクです:すべてのモデルのhttps://laravel.com/docs/5.4/views#view-composers

関連する問題