2012-09-17 29 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; 

?> 

您可能需要处理之后有相对路径,但这应该让你开始。