Je souhaite initialiser une variable spécifique et la réutiliser dans la classe sans avoir à réécrire tout le code encore et encore dans la classe.
$profileInfo = Profile::with('address')->where('id', '=', '1')->get();
Les variables ci-dessus sont ce que je souhaite réutiliser.
J'ai essayé d'utiliser le constructeur
protected $profileInfo; public function __construct(Profile $profileInfo){ $this->profileInfo = Profile::with('address')->where('id', '=', '1')->get(); } public function index($profileInfo){ $this->profileInfo; dd($profileInfo); }
Mais lorsque je charge la vue lame dans le navigateur, j'obtiens Too少的参数到函数 AppHttpControllersProfileController::index(), 0 Passed
.
S'il vous plaît, aidez-moi ?
Vous êtes en difficulté parce que vous confondez les concepts. Injection de dépendances, variables d'instance locales et éventuellement liaison de modèle de route ou liaison de variable de route.
L'injection de dépendances nécessite que Laravel vous fournisse une instance d'une classe. Dans les situations où Laravel charge quelque chose, il essaiera généralement de remplir les inconnues à l'aide de DI. Pour les constructeurs, vous demandez à Laravel de fournir au constructeur le nom de la variable
$profileInfo
下的Profile
une nouvelle instance de la classe. Vous n'utiliserez pas cette variable dans le constructeur, il n'est donc pas nécessaire de la demander ici.Ensuite (toujours dans le constructeur), définissez la variable locale
profileInfo
et attribuez-la à l'instance de classe de contrôleur.Continuez lorsque l'itinéraire tente de déclencher la demande de variable
index
方法时,存在$profileInfo
. Laravel n'a aucune idée de ce que c'est et cela ne correspond à rien dans la route (voir Route Model Binding dans la documentation). Par conséquent, vous obtenez le message « Trop peu de paramètres ». Si cette variable n'existe pas, vous devriez avoir défini leprofileInfo
auparavant.Si vous souhaitez conserver les variables locales, vous pouvez faire ceci :
Voici une autre suggestion à considérer...
Puisque cela s'appelle un profil, il semble que nous devrions demander au modèle utilisateur l'enregistrement de profil approprié.