簡體   English   中英

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();

(所有名稱空間都是完全編寫的,顯然沒有必要,而只是為了便於閱讀而做)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM