Я слышал от некоторых людей, что JRoute будет лучше для этого, но это работает, только если вы знаете URL-адрес, который вам нужен;мы должны построить наш URL-адрес динамически на основе текущего запроса, поэтому я использовал JURI.
В моем view.html.php я добавил следующий код:
$needSecure = $model->needSecure();
if($needSecure) {
$u =& JURI::getInstance( JURI::base() );
$u->setScheme( 'https' );
$tmpURL = $u->toString()."checkout";
}
else {
$tmpURL = "/checkout";
}
$this->assignRef("tmpURL", $tmpURL);
needSecure () isфункция в моей модели, которая извлекает значение из таблицы базы данных и возвращает логическое значение.Поэтому, если needSecure возвращает true, мы получаем текущий URI запроса, устанавливаем для первой части значение https, а затем добавляем бит, который мы отправляем.Если он возвращает false, мы просто устанавливаем бит для отправки.
В файле default.php у нас есть это:
<form id = "checkoutForm" name="checkoutForm" action="<?=$this->tmpURL?>/" method="post" onsubmit="updateSubmit()">
Если значение NeedSecure равно true, действие отображается на
<form id = "checkoutForm" name="checkoutForm" action="https://www.mysite.com/checkout" method="post" onsubmit="updateSubmit()">
, в противном случае - на
<form id = "checkoutForm" name="checkoutForm" action="/checkout" method="post" onsubmit="updateSubmit()">
Он отлично работает, и поскольку мы храним логическое значение в базе данных, это означает, что нам никогда не придется изменять сам код, если мы хотим сделать отправку новой формы безопасной или небезопасной.