2017-05-20 1 views
-1

J'ai un problème. J'essaie d'obtenir des valeurs de DB et d'ajouter leur au tableau. Ensuite, je veux utiliser ce tableau pour le rendu dans le modèle au moyen de Twig {{content.language.text_logo}}. Comment puis-je modifier les propriétés des objets dans le tableau en "public"?Symfony-3.2 "Impossible d'accéder à la propriété privée ..."

Ceci est mon IndexController.php

<?php 
namespace Seandle\HomeBundle\Controller; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Response; 

class IndexController extends Controller { 
    public function indexAction() { 
    return $this->render('SeandleHomeBundle:Default:index.html.twig', array(
     'content' => $this->getLanguage(), 
    )); 
    } 

    private function getLanguage() { 
    $repository = $this->getDoctrine()->getRepository('SeandleHomeBundle:SeandleLanguage'); 
    $languages = $repository->findAll(); 
    $language = array(); 
    foreach ($languages as $language_key => $language_value) { 
     $language['language'] = array(
     $language_value->languageLocation => array(
      $language_value->languageVariable => $language_value->languageContent 
     ) 
    ); 
    } 
    return $language; 
    } 
} 

This is screenshot from browser

+0

Comme il fait référence à votre accès à la propriété de l'entité, contribuerait à voir le code entité ainsi. Si la propriété est 'private', créez une fonction accesseur, donc' public function getLanguageLocation() {return $ this-> languageLocation;} 'pourrait être ajouté à l'entité, puis appelé dans votre vue. –

Répondre

1

Si la propriété est privée, généralement, il devient avec getters.

$language_value->getLanguageLocation(); 

Et je vous suggère de déplacer cette fonction à service, service d'appel ant dans le contrôleur. En savoir plus:

http://symfony.com/doc/current/service_container.html

+0

Merci, ça marche :) –