状況: POST メソッドを含むフォームを CMS ページに追加する必要がありました。カスタムフックとフォームを正常に表示するモジュールを作成しました。次に、ユーザー入力エラーに対応する必要があります。ユーザーが電子メールアドレスを入力しない場合は、それを検出する必要があり、フォームと一緒にページ全体を再度表示し、ユーザー入力の「エラー」を明確に示します。
問題: 問題は、接続された情報 (エラーについてなど) を含むページ全体を再度表示することです。このようなコードを追加すると、モジュールのPHPファイルに、
return $this->display(__FILE__, 'modulename.tpl');
それは(当然のことながら)フォームを含むCMSページ全体ではなく、フォームのみを表示します。
このコードの場合、
Tools::redirectLink('cms.php?id_cms=7');
GET メソッドでも POST メソッドでも情報を転送できません。
$_POST['test'] = 1;
Tools::redirectLink('cms.php?id_cms=7&test');
smarty 変数にも代入してみました
$smarty->assign('test', '1');
(フォーム自体が作成される.tplファイルで使用する必要があります)が、それを機能させる方法はありません。
{if isset($test)}...,
{if isset($smarty.post.test)}...,
{if isset($_POST['test'])}... {* neither of these conditionals end up as true *}
GET パラメータを url に割り当てても影響はありません。他の引数を含めたかどうかに関係なく、ある種のわかりやすい URL へのリンクの書き換えがあるためです。( [SHOPNAME]/cms.php?id_cms=7&test
-> [SHOPNAME]/content/7-cmspage-name
)
私の質問は: prestashop で現在のページ (またはおそらく任意のページ) を自分のデータと共に「リダイレクト」または「リロード」する方法はありますか?
私はケース全体を説明したので、私よりも優れた全体的な解決策を聞くことができます (おそらく、ケースについてまったく間違った方法で考えています)。これは他の可能な答えです。