web-dev-qa-db-ja.com

Laravel-複数の変数を表示に渡す

私はこのサイトを所有しており、そのページの1つでデータベースから人々の簡単なリストを作成しています。アクセスできる変数に特定の人を1人追加する必要があります。

return $view->with('persons', $persons);行を変更して、$ ms変数もビューに渡すにはどうすればよいですか?

    function view($view)
    {
        $ms = Person::where('name', 'Foo Bar');

        $persons = Person::order_by('list_order', 'ASC')->get();

        return $view->with('persons', $persons);
    }
64
pjmil

配列として渡すだけです:

$data = [
    'name'  => 'Raphael',
    'age'   => 22,
    'email' => '[email protected]'
];

return View::make('user')->with($data);

または、@ Antonioが言及したように、それらを連鎖させます。

89
rmobis

これがあなたのやり方です:

function view($view)
{
    $ms = Person::where('name', '=', 'Foo Bar')->first();

    $persons = Person::order_by('list_order', 'ASC')->get();

    return $view->with('persons', $persons)->with('ms', $ms);
}

compact() を使用することもできます。

function view($view)
{
    $ms = Person::where('name', '=', 'Foo Bar')->first();

    $persons = Person::order_by('list_order', 'ASC')->get();

    return $view->with(compact('persons', 'ms'));
}

または、1行で実行します。

function view($view)
{
    return $view
            ->with('ms', Person::where('name', '=', 'Foo Bar')->first())
            ->with('persons', Person::order_by('list_order', 'ASC')->get());
}

または、配列として送信することもできます。

function view($view)
{
    $ms = Person::where('name', '=', 'Foo Bar')->first();

    $persons = Person::order_by('list_order', 'ASC')->get();

    return $view->with('data', ['ms' => $ms, 'persons' => $persons]));
}

ただし、この場合、次の方法でアクセスする必要があります。

{{ $data['ms'] }}

コンパクトを使用

function view($view)
{
    $ms = Person::where('name', '=', 'Foo Bar')->first();

    $persons = Person::order_by('list_order', 'ASC')->get();
    return View::make('users', compact('ms','persons'));
}
29
sumit

Laravelビューに複数の変数を渡す

//Passing variable to view using compact method    
$var1=value1;
$var2=value2;
$var3=value3;
return view('viewName', compact('var1','var2','var3'));

//Passing variable to view using with Method
return view('viewName')->with(['var1'=>value1,'var2'=>value2,'var3'=>'value3']);

//Passing variable to view using Associative Array
return view('viewName', ['var1'=>value1,'var2'=>value2,'var3'=>value3]);

Laravelのビューへのデータの受け渡し について読む

20
Akshay Khale

同様の問題に出くわしましたが、必ずしもビューファイルを含むビューを返したくない場合は、これを行うことができます:

return $view->with(compact('myVar1', 'myVar2', ..... , 'myLastVar'));
3
Makan

この回答は

少し役立つ while 変数の大きな数を宣言する関数で

Laravel 5.7。*

例えば

public function index()
{
    $activePost = Post::where('status','=','active')->get()->count();

    $inActivePost = Post::where('status','=','inactive')->get()->count();

    $yesterdayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(-1))->get()->count();

    $todayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(0))->get()->count();

    return view('dashboard.index')->with('activePost',$activePost)->with('inActivePost',$inActivePost )->with('yesterdayPostActive',$yesterdayPostActive )->with('todayPostActive',$todayPostActive );
}

戻り値の最後の行が表示されると、見栄えがよくありません

あなたのプロジェクトが大きくなっているとき、それは良くありません

そのため

public function index()
    {
        $activePost = Post::where('status','=','active')->get()->count();

        $inActivePost = Post::where('status','=','inactive')->get()->count();

        $yesterdayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(-1))->get()->count();

        $todayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(0))->get()->count();

        $viewShareVars = ['activePost','inActivePost','yesterdayPostActive','todayPostActive'];

        return view('dashboard.index',compact($viewShareVars));
    }

すべての変数が$viewShareVarsの配列として宣言され、ビューでアクセスされているように見える

しかし、私の機能は非常に大きくなるので、私はラインを作ることにしました非常に単純な

public function index()
    {
        $activePost = Post::where('status','=','active')->get()->count();

        $inActivePost = Post::where('status','=','inactive')->get()->count();

        $yesterdayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(-1))->get()->count();

        $todayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(0))->get()->count();

        $viewShareVars = array_keys(get_defined_vars());

        return view('dashboard.index',compact($viewShareVars));
    }

ネイティブphp関数get_defined_vars()定義されたすべての変数を取得関数から

およびarray_keys変数名を取得します

あなたのビューでは、関数内で宣言されたすべての変数にアクセスできます

{{$todayPostActive}}として

1
Manojkiran.A

これを試してください、

$ms = Person::where('name', 'Foo Bar')->first();
$persons = Person::order_by('list_order', 'ASC')->get();
return View::make('viewname')->with(compact('persons','ms'));
1
reshma

複数の配列データをコントローラーからビューに渡すには、試してみてください。動いています。この例では、テーブルからサブジェクトの詳細を渡し、サブジェクトの詳細にはカテゴリIDが含まれています。カテゴリIDが別のテーブルカテゴリから取得された場合、nameなどの詳細です。

$category = Category::all();
$category = Category::pluck('name', 'id');
$item = Subject::find($id);
return View::make('subject.edit')->with(array('item'=>$item, 'category'=>$category));
0
Deepak Kumar
    $oblast = Oblast::all();
    $category = Category::where('slug', $catName)->first();
    $availableProjects = $category->availableProjects;
    return view('pages.business-area')->with(array('category'=>$category, 'availableProjects'=>$availableProjects, 'oblast'=>$oblast));
0
Dragana Poznan