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 的模型并添加 属性 禁用。
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();
(所有的命名空间都写的很清楚,这显然不是必需的,只是为了阅读方便)
我正在为访问者创建一个扩展程序以注册页面。
注册时,它应该在后端创建一个禁用的 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 的模型并添加 属性 禁用。
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();
(所有的命名空间都写的很清楚,这显然不是必需的,只是为了阅读方便)