2012-09-17 31 views
1

我有一個WordPress博客,我正在開發一個使用Cakephp的後端應用程序。將Cakephp表單嵌入Wordpress

我想使用cake開發博客的聯繫表單(因爲輸入的信息將從後端應用程序中獲得)。

現在,我試圖包括蛋糕視圖到wp使用ajax。這種方法的問題是我要麼使用Js->submit,這使得將文件附加到表單非常複雜,要麼我使用Form->submit,這使得顯示驗證錯誤成爲問題。此外,它會導致未顯示的recaptcha插件出現問題。

有沒有一種方法來整合使用PHP的窗體?我不需要身份驗證(這是一種公共形式),但我需要能夠在窗體上顯示驗證錯誤並在窗體上上傳文件。

+0

這只是一個壞主意,你不僅要加載一個臃腫的博客引擎,還要加載一個完整的應用程序框架?!只需使用一個WordPress聯繫表單插件。 – Dunhamzzz

+0

@Dunhamzz對於一個單一的表單,這是一個壞主意,但它可能會有一些更復雜的插件,可能已經存在cakephp – snowflake

+0

@Dunhamzzz謝謝你的建議,我已經考慮過,但它不是什麼我需要員工在後臺應用程序中處理聯繫請求,這是一款蛋糕應用程序。 – Ezequiel

回答

0

所以,我終於找到了一種我認爲是最好的方式,因爲它使用了蛋糕類。

我創建了一個根目錄文件new_file.php,基本上是的index.php文件副本,但不是使用通用的請求時,它要求我在尋找特定的頁面:

$Dispatcher = new Dispatcher(); 
$Dispatcher->dispatch(new CakeRequest('CONTROLLER/ACTION'), new CakeResponse(array('charset' => Configure::read('App.encoding')))); 

當然,您必須將「CONTROLLER/ACTION」更改爲您的控制器。

之後,您只需將文件包含在WordPress插件中即可。

只有一個更改。有些方法與WP聲明衝突。當你包含上述文件時,PHP會發出抱怨。您必須找到這些方法並將其包裝到一個if中,以確保該方法不被重新聲明。這可能會破壞某些功能,如本地化(函數__()),但如果包含的內容不是一個非常複雜的蛋糕應用程序,則可以。

if (!function_exists('methodName')) { 

希望最後一個問題將被解決一旦蛋糕3與名稱空間支持。

0

其實,你可以加載任何網站變成使用curl一個字符串,如果您加載連接空白頁與你的WordPress的佔位符,然後你可以使用它作爲您的佈局

<?php 
$url = "http://www.yourdomain.com/emptypage"; 
$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
$output = curl_exec($curl); 
curl_close($curl) 

$placeholder = "{{CONTENT}}" 
$placeholderPos = strpos($output,$placeholder); 

$beginning = substr($output,0,$placeholderPos); 
$end = substr($output,$placeholderPos+strlen($placeholder)); 

echo $beginning; 

////// your form ////// 

echo $end; 

?> 

您可能需要處理之後有相對路徑,但這應該讓你開始。