packages/my_extension/Resources/Private/Templates/Newsletter/SomeForm.html
<f:form action="orderNewsletter" method="post" object="user" objectName="user">
<div>
<f:form.checkbox property="orderNewsletter" id="orderNewsletter" value="yes" />
<label for="orderNewsletter">Order newsletter</label>
</div>
<div>
<f:form.submit value="Submit" />
</div>
</f:form>
Then the controller action can look like this:
packages/my_extension/Classes/Controller/NewsletterController.php
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension\Controller;
use MyVendor\MyExtension\Domain\Model\User;
use Psr\Http\Message\ResponseInterface;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
class NewsletterController extends ActionController
{
public function orderNewsletterAction(
User $user,
): ResponseInterface {
if ($user->isOrderNewsletter()) {
}
return $this->htmlResponse();
}
}
An unchecked checkbox results in the property not being set. It should
therefore default to false
.
packages/my_extension/Classes/Domain/Model/User.php
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
class User extends AbstractEntity
{
protected bool $orderNewsletter = false;
public function isOrderNewsletter(): bool
{
return $this->orderNewsletter;
}
public function setOrderNewsletter(bool $orderNewsletter): void
{
$this->orderNewsletter = $orderNewsletter;
}
}