Мне нужна помощь с передачей переменной, которую я инициализировал с помощью __construct()
, для просмотра в Laravel.
Вот мой код контроллера
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'));
}
Я получаю сообщение об ошибке undefined variable profileInfo
При использовании compact()
используемые параметры должны быть определены как переменные:
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'));
}
В этом случае compact()
создаст такой массив:
[ 'profileInfo' => $this->profileInfo ]
compact()
ищет переменную с таким именем в текущей таблице символов и добавляет ее в выходной массив, чтобы имя переменной стало ключом, а содержимое переменной стало значением для этого ключа.
Вместо использования compact
вы можете передать такой массив:
protected $profileInfo;
public function __construct(){
$this->profileInfo = Profile::with('address')->where('id', '=', '1')->get();
}
public function index(){
return view('admin_pages.profile', ['profileInfo' => $this->profileInfo]);
}
@ГертБ. Ты прав. Я отредактировал свой ответ.
Всегда объясняйте свой ответ, а не просто говорите: «Попробуйте это».