Skip to content
Advertisement

Pass variable to view via controller in Laravel

I need help with passing the variable I have initialized using __construct() to view in Laravel.

Here is my controller code

protected $profileInfo;

public function __construct(){
   $this->profileInfo = Profile::with('address')->where('id', '=', '1')->get();
}
public function index(){
  $this->profileInfo;
  return view('admin_pages.profile', compact('profileInfo'));
}

I get an error undefined variable profileInfo

Advertisement

Answer

When using compact() the parameters used must be defined as variables:

protected $profileInfo;

public function __construct(){
   $this->profileInfo = Profile::with('address')->where('id', '=', '1')->get();
}
public function index(){
  $profileInfo = $this->profileInfo;
  return view('admin_pages.profile', compact('profileInfo'));
}

In this case compact() will create an array like this:

[ 'profileInfo' => $this->profileInfo ]
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement