Laravel-보기 위해 둘 이상의 변수 전달
이 사이트가 있고 그 페이지 중 하나는 데이터베이스에서 사람들의 간단한 목록을 만듭니다. 액세스 할 수있는 변수에 특정 사람을 추가해야합니다.
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);
}
배열로 전달하십시오.
$data = [
'name' => 'Raphael',
'age' => 22,
'email' => 'r.mobis@rmobis.com'
];
return View::make('user')->with($data);
또는 @Antonio가 언급 한 것처럼 연결하십시오.
방법은 다음과 같습니다.
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'));
}
또는 한 줄로 수행하십시오.
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'));
}
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에서 데이터를 뷰 에 전달하는 방법 에 대해 읽어보십시오.
비슷한 문제가 발생했지만 뷰 파일이있는 뷰를 반환하지 않으려면 다음을 수행 할 수 있습니다.
return $view->with(compact('myVar1', 'myVar2', ..... , 'myLastVar'));
이것을 시도하십시오,
$ms = Person::where('name', 'Foo Bar')->first();
$persons = Person::order_by('list_order', 'ASC')->get();
return View::make('viewname')->with(compact('persons','ms'));
이 답변은
bit helpful while declaring the large numbe of variable in the function
Laravel 5.7.*
For Example
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 );
}
When you see the last line of the returns it not looking good
When You Project is Getting Larger its not good
So
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));
}
As You see all the variables as declared as array of $viewShareVars
and Accessed in View
But My Function Becomes very Larger so i have decided to make the line as very simple
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));
}
the native php function get_defined_vars()
get all the defined variables from the function
and array_keys
will grab the variable names
so in your view you can access all the declared variable inside the function
as {{$todayPostActive}}
For passing multiple array data from controller to view, try it. It is working. In this example, I am passing subject details from a table and subject details contain category id, the details like name if category id is fetched from another table category.
$category = Category::all();
$category = Category::pluck('name', 'id');
$item = Subject::find($id);
return View::make('subject.edit')->with(array('item'=>$item, 'category'=>$category));
$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));
Its simple :)
<link rel="icon" href="{{ asset('favicon.ico')}}" type="image/x-icon" />
참고URL : https://stackoverflow.com/questions/20110757/laravel-pass-more-than-one-variable-to-view
'Programing' 카테고리의 다른 글
컴퓨터 종료 (0) | 2020.11.16 |
---|---|
Android / FBReaderJ / gen이 이미 존재하지만 소스 폴더가 아닙니다. (0) | 2020.11.16 |
mysql-python 설치 오류 : 'config-win.h'포함 파일을 열 수 없습니다. (0) | 2020.11.16 |
문자열에서 마지막 특정 문자 제거 C # (0) | 2020.11.16 |
Objective-C에서 ID가 주어지면 어떤 유형의 객체를 가리키는 지 어떻게 알 수 있습니까? (0) | 2020.11.16 |