0

我正在編程一個joomla組件的中間,這個組件將有一個註冊的多步形式,第一個包含2個單選按鈕。將變量從單選按鈕傳遞到step2的最簡單方法是什麼?當用戶提交第一個表單時,控制器被調用來顯示第二個步驟,是否有更簡單的方法呢?提前致謝。joomla在視圖之間傳遞變量

代碼:

形式(視圖代碼)

步驟1:

<form name="step1" action="<?php echo JRoute::_('index.php option=com_mycomponent&task=mycomponent.register'); ?>" method="POST"> 
<input type="radio" name="placement" value="0" checked /> Option 1<br /> 
<input type="radio" name="placement" value="1" /> Option 2<br /> 
<div class="next" onClick="document.forms['step1'].submit();"></div> 
</form> 

控制器的代碼來處理mycomponent.register

class mycomponentControllermycomponent extends JController 

{ 

    public function register() 

    { 
    $this->setRedirect(JRoute::_('index.php?option=com_mycomponent&view=default&layout=step2', false)); 
    } 

} 

我想從無線電傳遞值到step2;)

希望我沒有錯過一個關於這個話題,不能fin至少一個!

回答

2

在您可以在無線電值,然後在該鏈接把它傳遞到您的視圖寄存器方法:

public function register() 
    { 
     $placementOption = JRequest::getInt('placement', 0, 'post'); 

    $this->setRedirect(JRoute::_('index.php?option=com_mycomponent&view=default&layout=step2&placement=' . $placementOption, false)); 
    } 

在您的步驟2(view.html.php)的視圖中,可以訪問隨後以同樣的方式選項(這時候的值是GET不是POST):

$placementOption = JRequest::getInt('placement', 0, 'get'); 

$this->assignRef('placement', $placementOption); 

最後,如果您要訪問它的意見模板(如如default.php)

<?php echo $this->placement; ?> 
+0

第一種方法似乎沒有工作,它總是返回0:/ JRequest :: getInt似乎沒有取得我的值 順便說一下使用Joomla 2.5.4。 –

+0

在這種情況下,只需使用'(int)$ _ POST ['placement']'和'(int)$ _ GET ['placement']''。 – MrCode

+0

仍然不工作不幸,也試過$ placement = JRequest :: getVar('placement');沒有成功:/ –

0

我剛剛在Joomla解決了這個問題。我做的很簡單,工作正常。

1)我在文章的html編輯器中創建了一個帶有表單的文章。

2)在這篇文章的html代碼中,我給出的格式爲 form method =「POST」action =「child.php」。

3)現在,child.php是我的joomla安裝文件夾中的一個頁面,它具有與我的模板佈局,鏈接和文章完全相同的html頁面。所以,我製作了一個與其他任何頁面相似的頁面在我的網站上,但也有一個表格裏面。

4)在這個child.php裏面有一個表單。然後我想從文章中填充該字段的字段,我給出了 value =「?php echo $ _POST ['VARIABLE'];?」,其中VARIABLE是我的 html表單文章的字段的名稱。

所以,現在我的文章html表單將我重定向到child.php頁面,並且child.php中填充了我以前的html文章的變量。