0

Здравствуйте, я учусь использовать FLOW и есть некоторые вопросы:TYPO3 Flow Dependency Injection и адресности объекты, находящиеся к югу объекты других

У меня есть действие в контроллере вроде этого:

/** 
* Displays a subproduct. 
* 
* @param \My\Package\Domain\Model\Product $product The main product. 
* @param \My\Package\Domain\Model\Subproduct $subProduct A sub-product of $product. 
* @return void 
*/ 
public function subproductAction(\My\Package\Domain\Model\Product $product, \My\Package\Domain\Model\Subproduct $subProduct) { 
    $this->view->assign('product', $product); 
    $this->view->assign('subProduct', $subProduct); 
} 

Это было хорошо для тестирования и изучения структуры, но теперь я хочу убедиться, что $ subProduct на самом деле является суб-продуктом $ product.

Что было бы лучшим способом сделать это?

  • Использование DI (как это сейчас), чтобы получить как продукт и подпроизведение и проверить, если $ продукт
    содержит $ подпроизведение, если не изменить то, что переменные Поручаю моей
    зрения? Или:
  • Внесите продукт и используйте его для какого-либо метода $ product до , возвращайте $ subproduct, если он является субпродуктом продукта.
  • Создайте функцию репо, которая получает подпродукт, если это товарный стол является продуктом?

Продукты могут содержать hundreads из субпродуктов и для моего приложения мне нужно только, чтобы получить один подпроизведение и показать, что, таким образом, я не могу просто использовать мои продукты getSubProducts метод(), так как это будет возвращать все из них.

Спасибо за любые советы

ответ

0

Я бы с первым подходом. Пусть структура предоставит вам сущности и проверит ваши действия, если $ subProduct фактически принадлежит $ product.

Из моего опыта, как правило, лучше всего идти с простым подходом.

Я не уверен, чего вы пытаетесь достичь здесь, но если вы хотите отобразить $ subProduct, почему нет DI $ subProduct и использовать его отношение к продукту в шаблоне? Я имею в виду, что $ subProduct должен иметь некоторое обратное отношение к продукту правильно?

Итак, ваши действия будут выглядеть следующим образом:

/** 
* Displays a subproduct. 
* 
* @param \My\Package\Domain\Model\Subproduct $subProduct A sub-product of $product. 
* @return void 
*/ 
public function subproductAction(\My\Package\Domain\Model\Subproduct $subProduct) { 
    $this->view->assign('subProduct', $subProduct); 
} 

и в шаблоне вы могли бы сделать что-то вроде:

{subProduct.product.title} 

Я надеюсь, что это помогает. Чтобы дать достойный совет нужно было бы знать, что вы все приложение или, по крайней мере, один нуждается в Бессер понимание проблемы.

1

Я знаю, что это старый вопрос, но ничего не говорится об инъекции зависимостей.

В ваших \My\Package\Domain\Model\Product вы должны иметь поле protected $subProducts типа \Doctrine\Common\Collections\Collection<My\Package\Domain\Model\Subproduct> с setsubProducts, getSubProducts и, возможно, addSubProduct (получить + добавить) методов внутри.

Это коллекция, поэтому вы можете использовать contains, add и так далее.

Теперь, когда у вас есть продукт, назначенный для просмотра в вашем контроллере - в СТГЕ жидкости как {product} - вы можете использовать жидкость помощник for вида на {product.subProducts} - нет никакой необходимости, чтобы получить его в контроллере (все получают [и некоторые другие] общественности методы из модели работают таким образом).

Только для проверки (при обновлении) вы можете проверить, $product->getSubProducts->contains($subProduct) то что-то ..