将Cakephp表单嵌入到Wordpress中

时间:2012-09-17 19:08:31

标签: wordpress cakephp wordpress-plugin

我有一个Wordpress博客,我正在使用Cakephp开发一个后端应用程序。

我想使用cake开发博客的联系表单(因为输入的信息可以从后端应用程序获得)。

现在,我尝试使用ajax将蛋糕视图包含到wp中。这种方法的问题在于我要么使用Js->submit,这会使表单中的文件附加非常复杂,或者我使用Form->submit,这会使显示验证错误成为问题。此外,它会导致recaptcha插件无法显示出来。

有没有办法使用php集成表单?我不需要身份验证(它是公共表单),但我需要能够在表单上显示验证错误并在表单上上传文件。

2 个答案:

答案 0 :(得分: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;

?>

之后你可能不得不处理相对路径,但这应该让你开始。

答案 1 :(得分:0)

所以,我终于找到了一种我认为最好的方法,因为它使用了蛋糕类。

我在webroot上创建了一个文件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')) {

希望一旦Cake 3支持命名空间支持,最后一个问题就会得到解决。