Я создаю расширение для посетителей, чтобы зарегистрироваться на странице.
При регистрации он должен создать пользователя 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
Отключение пользователя по умолчанию не включено на стандартном объекте пользователя. Я сам решил эту проблему, создав модель, расширяющую FrontendUser от TYPO3 и добавив свойство 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; } }
Вам может понадобиться немного typoscript, чтобы сопоставить его с соответствующим свойством
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();
(Все пространства имен полностью написаны, это необязательно, но просто делается для удобства чтения)