1

私はWordpressブログを持っていて、Cakephpを使用してバックエンドアプリケーションを開発しています。

ケーキを使ってブログのお問い合わせフォームを作成したい(入力した情報はバックエンドアプリから入手できるため)。

今、私はajaxを使用してケーキビューをwpに含めてみました。このアプローチの問題はJs->submit、フォームへのファイルの添付を非常に複雑にする。を使用するかForm->submit、検証エラーの表示を問題にする。を使用することです。また、recaptchaプラグインが表示されないという問題が発生します。

PHPを使用してフォームを統合する方法はありますか?認証は必要ありません(これは公開フォームです)が、フォームに検証エラーを表示し、フォームにファイルをアップロードできるようにする必要があります。

4

2 に答える 2

0

それで、ケーキのクラスを使っているので、私はついに私が最高だと思う方法を見つけました。

基本的にindex.phpのコピーであるファイルnew_file.phpをwebrootに作成しましたが、一般的なリクエストを使用する代わりに、探している特定のページをリクエストします。

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

もちろん、「CONTROLLER/ACTION」をコントローラーに変更する必要があります。

その後、WordPressプラグインにファイルを含めるだけです。

もう1つだけ変更があります。WP宣言と競合するメソッドがいくつかあります。上記のファイルを含めると、PHPは文句を言います。これらのメソッドを見つけてifにラップし、メソッドが再宣言されていないことを確認する必要があります。これにより、ローカリゼーション(function __())などの一部の機能が損なわれる可能性がありますが、含めるものが非常に複雑なケーキアプリケーションでない場合は問題ありません。

if (!function_exists('methodName')) {

Cake 3が名前空間をサポートするようになったら、最後の問題が解決されることを願っています。

于 2013-02-25T20:01:16.090 に答える
0

実際には、CURLを使用して任意のWebサイトを文字列にロードできます。ワードプレスからプレースホルダーを使用して空のページをロードすると、それをレイアウトとして使用できます。

<?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 に答える