2012-12-06 56 views
3

我知道這是不可能的一個HTML表單有兩個動作,但也許有更好的辦法讓我完成我所需要的。我有一個簡單的表單來收集用戶的電子郵件地址併爲他們註冊一個常用聯繫人電子郵件列表。另外,電子郵件被提交給另一個控制器,該控制器顯示包含表單中的$ email變量的感謝消息。由於表單信息正在發送給thankyou()和Constant Contact站點,因此我可以單獨完成這兩項工作,但無法讓它們彼此同步工作。我確信有一種方法可以讓我通過thankyou()控制器將這些數據發送到Constant Contact,我不知道該怎麼做。Codeigniter表單提交到多個地方

此外,我不能使用Ajax,因爲我需要顯示一個不同的頁面提交,以跟蹤感謝頁面已被查看多少次。

+0

你可以使用'$ _SESSION'數據嗎?我相信codeigniter也可以創建Flash會話數據,因爲它曾經使用過,然後被刪除。 – Dale

+0

你可以顯示你用於常量聯繫人提交的代碼嗎?因爲我沒有理由爲此使用第二個控制器函數或flashdata。當我創建用戶時,我使用同一控制器寫入三個模型和MailChimp,而且沒有問題 –

+0

在_sign up_ --then-- _say hello_例中,您可以簡單地從一個控制器重定向到另一個控制器。在更復雜的情況下,您可以通過ajax調用(客戶端javascripted)設置多個操作。您仍然可以瀏覽其他頁面,將任何ajax回覆保存到瀏覽器的localStorage。 –

回答

1

使用flashdata,並將電子郵件地址存儲在flashdata變量中。

$this->session->set_flashdata('email', $email); 

請記住,如果未在下一個請求中使用flashdata,則需要「保留」flashdata,否則它將消失。

$this->session->keep_flashdata('email'); 

然後,該視圖的$email變量設置爲$this->session->flashdata('email');

+0

這似乎是我正在尋找!所以我基本上在$ this-> session-> set_flashdata('emailAddr')中設置了電子郵件地址,並立即將此信息傳遞給常量聯繫人? –

+0

我會做的是設置flashdata,提交給常量聯繫人的API(這就是你在做什麼,對吧?),然後加載包含確認頁面的視圖。我不確定爲什麼你需要flashdata,但是如果你可以給我們更多關於你當前使用的過程的細節,那將會有幫助。 – Brendan

+0

我避免使用API​​,因爲它是一個簡單的提交表單,並且常用的聯繫人處理得很好。那時我遇到了向兩臺不同的服務器提交數據的問題。我認爲這將是更容易與API不是嗎? –

0

應該是這樣的: - 鑑於:

<form action="mycontroller/save"> 
</form> 

在myController的:

public function save(){ 
    // Do whatever you have to do 
    $this->session->set_flashdata('email',$this->input->post('useremail')); 
    redirect('url to thankyou() controller'); 

} 

謝謝你的控制器:

public function save(){ 
    // Do whatever you have to do 
    $email = $this->session->flashdata('email'); 
    $this->load->view('yourview',$email); 

} 
+0

這將工作,如果在保存()我可以提交數據到http://constantcontact.com/blahblahblah。有沒有辦法通過控制器來做到這一點? –

+0

你是什麼意思?並且節省了你正在談論的第一或第二 –