1

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

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

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

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

4

2 回答 2

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;

?>

之后您可能必须处理相对路径,但这应该可以帮助您入门。

于 2012-09-17T21:16:10.963 回答
0

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

我在 webroot 上创建了一个文件 new_file.php,它基本上是 index.php 的副本,但它没有使用通用请求,而是请求我正在寻找的特定页面:

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

当然,您必须将“控制器/操作”更改为您的控制器。

之后,您只需要将文件包含在 WordPress 插件中。

只有一个变化。有些方法与 WP 声明冲突。当您包含上述文件时,PHP 会报错。您必须找到这些方法并将它们包装到 if 中以确保该方法未被重新声明。这可能会破坏某些功能,例如本地化(函数 __()),但如果您包含的不是一个非常复杂的蛋糕应用程序,那也没关系。

if (!function_exists('methodName')) {

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

于 2013-02-25T20:01:16.090 回答