Php 类型3:在扩展控制器中添加自定义设置函数

Php 类型3:在扩展控制器中添加自定义设置函数,php,typo3,extbase,Php,Typo3,Extbase,我正在创建一个扩展,供访问者注册到该页面。 注册时,它应该在后端创建一个FE用户,该用户被禁用,并将由管理员手动启用。因此,在创建FE用户时,我需要将disable字段设置为1 这是我的控制器内的功能: /** * action create * * @param \Vendor\FeReg\Domain\Model\Dummy $newDummy * @return void */ public function createAction(\Vendor\FeReg\Domain\M

我正在创建一个扩展,供访问者注册到该页面。 注册时,它应该在后端创建一个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->setDisable1这样的东西


环境:TYPO3 7.6.8/PHP 5.6.24/mysqlnd 5.0.11在标准用户对象上禁用用户不是默认启用的。我自己解决了这个问题,创建了一个从TYPO3扩展FrontendUser的模型,并添加了一个属性disable

类FrontendUser extends\TYPO3\CMS\Extbase\Domain\Model\FrontendUser{ /** *@var布尔值 */ 保护$disable; /** *获取禁用 * *@返回布尔值 */ 公共函数getDisable{ 返回bool$this->disable; } /** *设置禁用 * *@param boolean$disable *@返回无效 */ 公共函数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();

所有名称空间都是完全编写的,这显然不是必需的,但只是为了便于阅读而这样做

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

类FrontendUser extends\TYPO3\CMS\Extbase\Domain\Model\FrontendUser{ /** *@var布尔值 */ 保护$disable; /** *获取禁用 * *@返回布尔值 */ 公共函数getDisable{ 返回bool$this->disable; } /** *设置禁用 * *@param boolean$disable *@返回无效 */ 公共函数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();

所有名称空间都是完全编写的,这显然不是必需的,只是为了便于阅读而做的

没有时间给出真正的答案,所以只需一条注释:构建您自己的FrontendUser对象,该对象继承自extbase对象。添加字段disabled,或者不管它如何调用,使用getter和setter检查TCA或DB。然后在打字脚本配置中将其注册为子类。之后,您应该能够像使用普通FE用户对象一样使用它。互联网上有这样的例子。FE用户可以设置为隐藏或删除,而不是禁用。请看FE用户的模型。@rob ot我很确定您也可以禁用它们,因为复选框就在我面前。此外,该表有一个名为disable的列,带有tinyint4。没有时间给出真正的答案,所以只需一条注释:构建您自己的FrontendUser对象,该对象继承自extbase对象。添加字段disabled,或者不管它如何调用,使用getter和setter检查TCA或DB。然后在打字脚本配置中将其注册为子类。之后,您应该能够像使用普通FE用户对象一样使用它。互联网上有这样的例子。FE用户可以设置为隐藏或删除,而不是禁用。请看FE用户的模型。@rob ot我很确定您也可以禁用它们,因为复选框就在我面前。此外,该表还有一个名为disable的列,其中包含一个tinyint4。哪个块需要插入到我的扩展名的哪个文件中?我得到了这个,但不知何故它不起作用:1-Model/Dummy.php/2-setup.ts/3-DummyRepository.php/4-DummyController.php这似乎是对的。我能想到的可能是一个输入错误。如果映射已正确加载,请检查typoscript对象浏览器。否则,请完整显示您的扩展代码。可能是一个简单的名字空间输入错误,让instanceCurious看看它是否能正常工作?还是密码还有问题?哦,谢谢你的提问,我完全忘了回答。非常好,谢谢!假设每个代码块都有一个从1到4的数字。哪个块需要插入到我的扩展名的哪个文件中?我得到了这个,但不知何故它不起作用:1-Model/Dummy.php/2-setup.ts/3-DummyRepository.php/4-DummyController.php这似乎是对的。我能想到的可能是一个输入错误。检查
如果映射已正确加载,则键入脚本对象浏览器。否则,请完整显示您的扩展代码。可能是一个简单的名字空间输入错误,让instanceCurious看看它是否能正常工作?还是密码还有问题?哦,谢谢你的提问,我完全忘了回答。非常好,谢谢!