0

すべてのページに表示されるように、フッターの固定divに連絡先を表示しています。します。「連絡先」ボタンをクリックすると、AJAXを介して連絡先フォームが読み込まれます。そのために、Magentoのデフォルトの連絡先モジュールのindexControllerに新しいアクションを作成しました。そのアクションでは、すべてのページに表示するために使用しているカスタムフォームを呼び出すブロックをエコーし​​ています。

public function quickcontactAction(){
    echo $this->getLayout()->createBlock('core/template')->setTemplate('contacts/formquick.phtml')->toHtml();           
}

したがって、基本的に、連絡先モジュールのテンプレートには、form.phtmlとformquick.phtmlの2つのファイルがあります。フッターから、indexController.phpのpostactionメソッドを呼び出すformquick.phtmlファイルを呼び出すアクションを呼び出しています。今私の問題は、フッターの固定divからフォームを送信しようとすると、ヘッダーがすでに送信されていることを示すシステムログが生成されることです。

HEADERS ALREADY SENT: <pre>[0] C:\Program Files\EasyPHP-5.3.8.0\www\magento\app\code\core\Mage\Core\Controller\Response\Http.php:52
[1] C:\Program Files\EasyPHP-5.3.8.0\www\magento\lib\Zend\Controller\Response\Abstract.php:766
[2] C:\Program Files\EasyPHP-5.3.8.0\www\magento\app\code\core\Mage\Core\Controller\Response\Http.php:83
[3] C:\Program Files\EasyPHP-5.3.8.0\www\magento\app\code\core\Mage\Core\Controller\Varien\Front.php:188
[4] C:\Program Files\EasyPHP-5.3.8.0\www\magento\app\code\core\Mage\Core\Model\App.php:354
[5] C:\Program Files\EasyPHP-5.3.8.0\www\magento\app\Mage.php:683
[6] C:\Program Files\EasyPHP-5.3.8.0\www\magento\index.php:81
</pre>

コンタクトフォームループ全体に関係があると感じていますが、解決方法を完全に理解することはできません。また、フォームが送信された後、それはコントローラーで設定されている方法であるため、連絡先ページにリダイレクトされますが、同じページにとどまりたいと思います。誰かが私を案内してくれますか?AJAXを介して別の連絡フォームをロードする必要があります。より良い方法があれば、それも問題ありません。誰?

4

1 に答える 1

1

自分で解決しました。コントローラーアクション内にブロックをエコーし​​ていました。それを削除し、代わりにこのようなレイアウトをレンダリングしました

public function quickcontactAction(){
    $this->loadLayout()->renderLayout();
}

そして、contacts.xmlに、連絡先フォームファイルと呼ばれる新しいブロックを追加しました。

于 2012-12-11T09:05:14.313 に答える