2016-06-24 2 views
0

У меня есть переменная private $groupId; в сущности. И есть функция контроллера public function settingsListAction(Request $request)Как получить доступ к переменной объекта в функции контроллера?

Я хочу получить доступ к этому groupId в функции контроллера. Как это можно достичь?

Редактировать

функция Контроллер

/** 
* Get all settings content list 
* @Route("settings", name="settings_list") 
*/ 
public function settingsListAction(Request $request) 
{ 
    // Cannot edit at all. 
    //Fetch Current Financial Year target data to display that on "Road to paradise tab" 
    $entity = new J1Setting(); 
    //do smthing 
    $groupIdValue = $entity->getGroup(); 

    $settingsGroup = $this->getDoctrine()->getRepository('AppBundle:J1SettingGroup')->findAll(); 

    $settingsList = $this->getDoctrine()->getRepository('AppBundle:J1Setting')->findBy(array('groupId' => groupIdValue)); 

    return $this->render('default/settingsList.html.twig', array('settingsGroup' => $settingsGroup, 'settingsList' => $settingsList)); 
} 

И юридическое лицо:

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use AppBundle\Component\Annotation\J1Entity; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
* J1Setting 
* 
* @ORM\Table(name="j1_settings", indexes={@ORM\Index(name="IDX_SName", columns={"name"})}) 
* @ORM\Entity(repositoryClass="AppBundle\Repository\J1SettingRepository") 
* @J1Entity(auditClass="AppBundle\Component\Audit\J1AuditSetting") 
*/ 
class J1Setting 
{ 
/** 
* @var integer 
* 
* @ORM\Column(name="setting_id", type="integer") 
* 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $settingid; 

/** 
* @var string 
* 
* @ORM\Column(name="name", type="string", length=100, nullable=true) 
*/ 
private $name; 

/** 
* @var string 
* 
* @ORM\Column(name="value", type="string", length=250, nullable=true) 
*/ 
private $value; 

/** 
* @var string 
* 
* @ORM\Column(name="description", type="string", length=255) 
*/ 
private $description; 

/** 
* @var integer 
* 
* @ORM\Column(name="group_id", type="integer") 
* @ORM\Id 
*/ 
private $groupId; 

/** 
* @var J1SettingGroup 
* 
* @ORM\ManyToOne(targetEntity="J1SettingGroup", inversedBy="settings") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="group_id", referencedColumnName="id") 
* }) 
*/ 
private $group; 

/** 
* @var string 
* 
* @ORM\Column(name="setting_type", type="string", length=100) 
*/ 
private $settingType; 



/** 
* Get settingid 
* 
* @return integer 
*/ 
public function getSettingId() 
{ 
    return $this->settingid; 
} 

/** 
* Set name 
* 
* @param string $name 
* @return J1Setting 
*/ 
public function setName($name) 
{ 
    $this->name = $name; 

    return $this; 
} 

/** 
* Get name 
* 
* @return string 
*/ 
public function getName() 
{ 
    return $this->name; 
} 

/** 
* Set value 
* 
* @param string $value 
* @return J1Setting 
*/ 
public function setValue($value) 
{ 
    $this->value = serialize($value); 

    return $this; 
} 

/** 
* Get value 
* 
* @return string 
*/ 
public function getValue() 
{ 
    return unserialize($this->value); 
} 

/** 
* Return name replacing underscores with spaces 
* 
* @return mixed 
*/ 
public function getFriendlyName(){ 
    return str_replace('_', ' ', $this->getName()); 
} 
/** 
* Set description 
* 
* @param string $description 
* @return J1Setting 
*/ 
public function setDescription($description) 
{ 
    $this->description = $description; 

    return $this; 
} 

/** 
* Get description 
* 
* @return string 
*/ 
public function getDescription() 
{ 
    return $this->description; 
} 

/** 
* Set groupId 
* 
* @param integer $groupId 
* @return J1Setting 
*/ 
public function setGroupId($groupId) 
{ 
    $this->groupId = $groupId; 

    return $this; 
} 

/** 
* Get groupId 
* 
* @return integer 
*/ 
public function getGroupId() 
{ 
    return $this->groupId; 
} 

/** 
* Set settingType 
* 
* @param string $settingType 
* @return J1Setting 
*/ 
public function setSettingType($settingType) 
{ 
    $this->settingType = $settingType; 

    return $this; 
} 

/** 
* Get settingType 
* 
* @return string 
*/ 
public function getSettingType() 
{ 
    return $this->settingType; 
} 


/** 
* Set group 
* 
* @param $group 
* @return J1Setting 
*/ 
public function setGroup($group = null) 
{ 
$this->group = $group; 

return $this; 
} 

/** 
* Get group 
* 
* @return integer 
*/ 
public function getGroup() 
{ 
return $this->group; 
} 
} 
+0

Вам необходимо предоставить дополнительную информацию! Где эта переменная '$ groupId'? Является ли это частью класса контроллера? Пожалуйста, укажите полный пример своей проблемы. –

+0

@EmanuelOster Я отредактировал вопрос –

ответ

0

вам необходимо создать геттер в вашей организации

public function getGroupId(){ 
    return $this->groupId; 
} 
public function setGroupId($groupId){ 
    $this->groupId = $groupId; 
} 

и в контроллере:

$entity = new J1Setting(); 
$entity->setGroupId(123); 
$groupIdValue = $entity->getGroupId(); 
var_dump($goupIdValue) //outputs 123 
+0

Спасибо, но он возвращает null. –

+0

Я обновил свой ответ, он возвращает null, если у вашего объекта нет набора groupId. –

0

При использовании доктрины, вы не должны ставить внешние ключи в единое целое. Это означает, что groupId не должен быть частью вашего объекта J1Setting. Если вы хотите получить доступ к идентификатору связанной группы, вам необходимо использовать $entity->getGroup()->getId(). Очевидно, что это работает, только если на самом деле имеет группу!

+0

При использовании '$ entity-> getGroup-> getId()' он дает ошибку: Ошибка: вызов функции-члена getId() в нуле –

+0

Как я только что объяснил, это работает только в том случае, если '$ entity' имеет группу. Очевидно, это не так. Если вы никогда не устанавливали группу для сущности, она, естественно, всегда будет «null» –

+0

Не могли бы вы рассказать мне, что мне теперь делать, чтобы получить значение? –

Смежные вопросы