Как получить текущий объект в компоненте (symfony 1.4)? - PullRequest
0 голосов
/ 08 февраля 2012

Единственный код, который я нашел:

class modulenameComponents extends sfComponents
{

  public function executeAction(sfWebRequest $request)
  {

    $object = $this->getContext()->getController()
      ->getAction($this->getModuleName(), $request->getParameter('action'))
      ->getRoute()->getObject();

  } 
}

Но это не работает, если компонент входит в другой модуль.

Ответы [ 3 ]

3 голосов
/ 15 февраля 2012

Компонент вызывается из шаблона, поэтому передайте ваш объект из шаблона:

<?php include_component('modulename', 'actionName', array('myObject' => $myObject)) ?>

Вы сможете получить доступ к своему объекту в вашем компоненте через $ this:

class modulenameComponents extends sfComponents
{
   public function executeActionName()
   {
     // your object
     $object = $this->myObject;
     ...
   }
}
1 голос
/ 21 июня 2013

Относительно генератора администрирования доктрины Symfony 1.4.x, где все делается в generator.yml, компоненты получают объект формы, который содержит объект модели.Итак, чтобы получить доступ к текущему объекту модели, выполните следующие действия:

$myModelObject = $this->form->getObject();

ПРИМЕЧАНИЕ. Это объект модели, а не объект таблицы.Чтобы получить объект таблицы, сделайте следующее:

$myModelTableObject = $this->form->getObject()->getTable();

Мне пришлось самому в этом разобраться, поэтому надеюсь, что это кому-нибудь поможет ...

0 голосов
/ 09 февраля 2012

Возможно, есть лучший способ, но использование sfConfig::set() в вашем действии и sfConfig::get() в вашем компоненте должно помочь.

...