1

我想将用户名存储在优惠券对象中,每个优惠券对象已经具有创建它的用户的 uid。我可以遍历优惠券对象并从 fe_users 读取相关的用户名,但是我将如何将这些用户名保存到优惠券中,以便当它们传递给模板时,可以像这样coupon.username 或其他一些简单的方式读取用户名所以每个用户名都会出现在带有正确优惠券的页面上,因为它们都打印在表格中?

如果我做的是基本的php而不是typo3,我只会定义一个查询,但typo3 v4.5的方式是什么?

到目前为止,我的代码 - 在我尝试将新属性 --creatorname -- 分配给 $coup 对象的那一行中消失了。

public function listAction() {
        $coupons = $this->couponRepository->findAll();
                // @var Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository */
                $userRepository = $this->objectManager->get("Tx_Extbase_Domain_Repository_FrontendUserRepository");
                foreach ($coupons as $coup) {
                    echo '<br />test '.$coup->getCreator(); 
                    echo '<br />count = '.$userRepository->countAll().'<br />';
                    $newObject =  $userRepository->findByUid( intval($coup->getCreator()));
                    //var_dump($newObject);

                    var_dump($coup);
                    echo '<br />getUsername '.$newObject->getUsername() ; 
                    $coup['creatorname'] = $newObject->getUsername();
                     echo '<br />creatorname '.$coup['creatorname'] ; 
                }
        $this->view->assign('coupons', $coupons);
    }
4

1 回答 1

1

使前端用户成为模型的属性

这是我的首选解决方案。您的优惠券模型中已经有一个 Ceator,它似乎只是一个整数值。您可以将其与 fe_user 建立真正的关系。

模型:

/**
 * @var Tx_Extbase_Domain_Model_FrontendUser
 */
protected $creator;

/**
 * @param Tx_Extbase_Domain_Model_FrontendUser $creator
 * @return void
 */
public function setCreator(Tx_Extbase_Domain_Model_FrontendUser $creator) {
    $this->creator = $creator;
}

/**
 * @return Tx_Extbase_Domain_Model_FrontendUser
 */
public function getCreator() {
    return $this->creator;
}

TCA: 在您的优惠券表的 TCA 配置中,您将创建者列更改为

...    
'creator' => array(
      'label' => 'your/label/from/locallang.xml',
      'config' => array(
        'type' => 'select',
        'foreign_table' => 'fe_users'
      )
    ),
...

在此之后,您可以为您的优惠券设置一个孔 FrontendUser 对象。这也适用于您现有的优惠券,因为在数据库中仍然只存储 fe_user 的 uid。只有 Typo3(通过 TCA)和 extbase(通过模型)被告知这是与 fe_users 的关系。所以 $coupon->getCreator() 现在返回一个 FrontendUser。但是您不必在控制器中调用它,只需将您的 $coupons 传递给视图。您可以使用 Fluid 访问创建者的用户名

{coupon.creator.username}
于 2013-11-09T07:39:14.730 回答