TYPO3:在扩展控制器中添加自定义设置函数


TYPO3: Add custom set functions in extension controller

我正在创建一个扩展,供访问者注册该页面
注册时,它应该在后台创建一个被禁用的FE用户(并将由管理员手动启用(。因此,在创建FE用户时,我需要将disable字段设置为1

这是我的控制器内部的功能:

/**
 * action create
 *
 * @param 'Vendor'FeReg'Domain'Model'Dummy $newDummy
 * @return void
 */
public function createAction('Vendor'FeReg'Domain'Model'Dummy $newDummy)
{
    // vars
    $title = $newDummy->getTitle();
    $atitle = $newDummy->getAtitle();
    $fname = $newDummy->getFname();
    $lname = $newDummy->getLname();
    $street = $newDummy->getStreet();
    $city = $newDummy->getCity();
    $post = $newDummy->getPost();
    $phone = $newDummy->getPhone();
    $fax = $newDummy->getFax();
    $email = $newDummy->getEmail();
    $org = $newDummy->getOrg();
    $cat = $newDummy->getCat();
    $field = $newDummy->getField();
    $uname = $newDummy->getUname();
    $ppass = $newDummy->getPpass();
    $cpass = $newDummy->getCpass();
    $fulltitle = ($atitle ? $title." ".$atitle : $title);

    $frontendUser = new FrontendUser();
    $frontendUser->setUsername($uname);
    $frontendUser->setPassword($ppass);
    $frontendUser->setFirstname($fname);
    $frontendUser->setLastname($lname);
    $frontendUser->setAddress($street);
    $frontendUser->setTelephone($phone);
    $frontendUser->setFax($fax);
    $frontendUser->setEmail($email);
    $frontendUser->setTitle($fulltitle);
    $frontendUser->setZip($post);
    $frontendUser->setCity($city);
    $frontendUser->setCompany($org);
    $this->frontendUserRepository->add($frontendUser);
    // $this->dummyRepository->add($newDummy);
    // $this->addFlashMessage($title, '', 'TYPO3'CMS'Core'Messaging'AbstractMessage::ERROR);
    $this->redirect('new');
}

为了完成这项工作,我还加载了$frontendUserRepository
我需要$frontendUser->setDisable(1)之类的东西。

环境:TYPO3 7.6.8/PHP 5.6.24/mysqlnd 5.0.11

禁用用户不是标准用户对象上默认启用的。我自己已经解决了这个问题,创建了一个从TYPO3扩展FrontendUser的模型,并添加了一个属性disable。

class FrontendUser extends 'TYPO3'CMS'Extbase'Domain'Model'FrontendUser {
    /**
     * @var boolean
     */
    protected $disable;
    /**
     * Gets the Disable
     *
     * @return boolean
     */
    public function getDisable() {
        return (bool)$this->disable;
    }
    /**
     * Sets the Disable
     *
     * @param boolean $disable
     * @return void
     */
    public function setDisable($disable) {
        $this->disable = (bool)$disable;
    }
}

您可能需要一些打字脚本来将其映射到正确的属性

config.tx_extbase {
    persistence{
        classes {
            VendorName'ExtensionName'Domain'Model'FrontendUser {
                mapping {
                    tableName = fe_users
                    columns {
                        disable.mapOnProperty = disable
                    }
                }
            }
        }
    }
}

您需要FrontendUserRepository以及

/**
* A Frontend User repository
*/
class FrontendUserRepository extends 'TYPO3'CMS'Extbase'Domain'Repository'FrontendUserRepository {
}

之后,您可以使用新创建的FrontendUser模型作为FrontendUser的模型,注入它,并愉快地使用

$userModel->setDisable(1);
// and
$userModel->getDisable();

(所有名称空间都是完整编写的,这显然不是必要的,只是为了便于阅读(