J'ai défini une variable dans les paramètres.ini, mais je souhaite maintenant récupérer cette variable à partir d'une entréeRepository et Comment dois-je aller au conteneur? P>
Merci:) P> $ ceci-> conteneur code> est déséquitable afin que je ne puisse pas le faire p >
5 Réponses :
Vous ne devez pas utiliser $ conteneur dans l'entitérepository. Au lieu de cela, créez un service de gestion de modèle et injectez le conteneur via DI. p>
Jetez un coup d'œil à des paquets tels que Fosuserbundle ... Voici un échantillon de mon manager modèle: Gist.github.com/ 2271046 Ensuite, vous pouvez définir un service CODE CODE>
Si j'ai plusieurs modèles comme un pour les produits, un pour les utilisateurs, je devrais ajouter un service séparé? Parce qu'il semble que la douleur ajout à tous ceux-ci pour chaque manager modèle
Eh bien, vous n'avez pas besoin d'ajouter ces configuration pour chaque gestionnaire de modèle. Vous pouvez créer un gestionnaire de modèle abstrait, puis disposez d'autres gestionnaires de modèle pour prolonger l'abstrait. Dans la configuration de service, vous créerez un service parent qui possède la configuration du service et les autres services étendront le service parent. Veuillez regarder ici plus d'informations: symfony.com/doc/current/comPonents/ Dépendance_injection / ...
Bonne Gawd! Il a juste besoin de "une" variable du conteneur. Je jure que certains programmeurs tentent de rendre les tâches les plus simples telles que compliquées et compliquées que possible. Il suffit d'obtenir le paramètre du conteneur de votre contrôleur et de "injecter" dans votre méthode de référentiel personnalisé. Utilisez les heures que vous avez enregistrées pour une promenade dans le parc et sentez les roses. Geez. Je détesterais voir comment vous tuez les mouches.
Je suis d'accord avec @Keyboard Smasher. J'utilise pour aimer Symfony, mais avoir à créer des services pour obtenir un objet du point A au point semble être un énorme pita. Plus je dois coder avec ce cadre trop complexe, plus j'aimerais avoir juste passé le temps d'apprendre le nœud quand j'ai commencé cela.
Vous pouvez récupérer votre variable du contrôleur comme d'habitude et transmettez-la à l'entitérepository si vous définissez une méthode de référentiel personnalisé. Par exemple:
J'ai aussi pensé à cela, mais je pense vraiment qu'il doit y avoir une autre façon de le faire
Si vous essayez d'accéder à Dbbal de l'entitéRepository Class, vous pouvez utiliser $ ceci-> getentalityManager () -> getconnection () pour l'obtenir.
ex: p>
class CustomRepository extends EntityRepository
{
public function myCustomFunction()
{
$conn = $this->getEntityManager()->getConnection();
$stmt = $conn->query($sql);
if ($stmt)
{
while ($row = $stmt->fetch())
var_dump($row);
}
}
}
bro, symfony parfois ou beaucoup de fois est un mal de tête, voici un chemin hacky, n'est pas le bon comme la réponse @Tuong Le réponse, mais une horreur fait beaucoup pour une variable comme une variable comme il était dit @KeyboardsMasher.
Au début de la fonction / méthode: p> afin que vous puissiez accéder à un conteneur avec p> espère que cela donne Il est temps d'aller marcher dans le parc =), p> p>
incroyable ! ! (y)
Si vous n'avez vraiment besoin que de passer un argument au service, vous pouvez simplement le transmettre sans avoir besoin d'un manager, comme:
services:
your_service:
class: YourServiceClass
arguments: [%some.parameter%]