在 Joomla 中提交后获取表单字段
Get form fields after submit in Joomla
我正在使用 Flexi 自定义代码创建一个按钮来向我发送电子邮件,但它似乎是随机工作的。我几乎从来没有得到 $sendMail
参数。但有时它有效,我收到了电子邮件...
<?php
JHtml::_('behavior.formvalidator');
$jinput = JFactory::getApplication()->input;
$sendMail = $jinput->get('sendMail', '', 'STRING');
if(isset($sendMail) && $sendMail == 'sendNow'){
$aId = JRequest::getVar('id');
$html = "";
$html .= "<h2>".$aId."</h2>";
$html .= "<p>test</p>";
$subject = "Request";
$from = array("noreply@test.com", "Website Contact");
$mailer = JFactory::getMailer();
$mailer->setSender($from);
$mailer->addRecipient("MY EMAIL");
$mailer->setSubject($subject);
$mailer->setBody($html);
$mailer->isHTML();
$mailer->send();
$submitted = "";
$submitted .= "Request confirmed";
echo $submitted;
}else{?>
<form action="<?php echo JUri::base() . basename($_SERVER['REQUEST_URI']); ?>" method="POST" name="adminForm" id="sendMailForm" class="form-validate">
<field type="hidden" value="sendNow" name="sendMail" class="required" />
<button type="submit" class="validate">SEND MAIL</button>
</form>
<?php }
?>
我正在使用 Joomla 3.8.5
很多奇怪的事情,但你可以从用 'input' 替换 'field' 开始。
不要使用 JRequest,你已经有了 $jinput.
另一个问题可能是您有重定向,将 post 请求更改为获取请求。打开 (chrome) 调试器,并检查网络标记(当你在那里时,检查 sendMail 输入是否确实存在)
我最终使用 CacheControl 来禁用页面上的缓存。
而且我可以从 $_SERVER[“REQUEST_URI”]
获取所有 $_GET
参数
我正在使用 Flexi 自定义代码创建一个按钮来向我发送电子邮件,但它似乎是随机工作的。我几乎从来没有得到 $sendMail
参数。但有时它有效,我收到了电子邮件...
<?php
JHtml::_('behavior.formvalidator');
$jinput = JFactory::getApplication()->input;
$sendMail = $jinput->get('sendMail', '', 'STRING');
if(isset($sendMail) && $sendMail == 'sendNow'){
$aId = JRequest::getVar('id');
$html = "";
$html .= "<h2>".$aId."</h2>";
$html .= "<p>test</p>";
$subject = "Request";
$from = array("noreply@test.com", "Website Contact");
$mailer = JFactory::getMailer();
$mailer->setSender($from);
$mailer->addRecipient("MY EMAIL");
$mailer->setSubject($subject);
$mailer->setBody($html);
$mailer->isHTML();
$mailer->send();
$submitted = "";
$submitted .= "Request confirmed";
echo $submitted;
}else{?>
<form action="<?php echo JUri::base() . basename($_SERVER['REQUEST_URI']); ?>" method="POST" name="adminForm" id="sendMailForm" class="form-validate">
<field type="hidden" value="sendNow" name="sendMail" class="required" />
<button type="submit" class="validate">SEND MAIL</button>
</form>
<?php }
?>
我正在使用 Joomla 3.8.5
很多奇怪的事情,但你可以从用 'input' 替换 'field' 开始。 不要使用 JRequest,你已经有了 $jinput.
另一个问题可能是您有重定向,将 post 请求更改为获取请求。打开 (chrome) 调试器,并检查网络标记(当你在那里时,检查 sendMail 输入是否确实存在)
我最终使用 CacheControl 来禁用页面上的缓存。
而且我可以从 $_SERVER[“REQUEST_URI”]
$_GET
参数