2012-04-16 9 views
0

状況:POSTメソッドを含むフォームをCMSページに追加する必要がありました。カスタムフックとフォームを正常に表示するモジュールを作成しました。それから私はユーザーの入力エラーに反応する必要があります。ユーザーが電子メールアドレスを入力していないときには、それを検出する必要があります。フォーム全体と共にページ全体を表示し、ユーザー入力の「エラー」を明示します。PrestaShop - 追加のパラメータを使用してCMSページをリロード

問題:問題は、接続された情報(たとえばエラーなどについて)で再び全ページを表示することです。モジュールのPHPファイルで、この種のコードを追加すると、フォームのCMSページ全体ではなく、フォームのみが表示されます。このコードの場合

Tools::redirectLink('cms.php?id_cms=7'); 

私がGETどちらのPOSTメソッドによる任意の情報を転送することができません。

$_POST['test'] = 1; 
Tools::redirectLink('cms.php?id_cms=7&test'); 

私も

$smarty->assign('test', '1'); 

(私はフォーム自体が作成されたの.tplファイルにそれを使用する必要があります)が、それは仕事を取得する方法はありませんSmartyの変数に代入しようとしました。私が推測するに優しいURLのいくつかの種類、私は他の引数を含めるかどうかにかかわらずに書き換えたリンクがあるのででもURLにGETパラメータを割り当てる

{if isset($test)}..., 
{if isset($smarty.post.test)}..., 
{if isset($_POST['test'])}... {* neither of these conditionals end up as true *} 

は、影響を与えることはありません。 ([SHOPNAME]/cms.php?id_cms=7&test - >[SHOPNAME]/content/7-cmspage-name

私の質問はです:「リダイレクト」または自分のデータが含まれるとともに、PrestaShopの中で、現在のページ(または一般的に可能性の任意のページ)を「リロード」する方法はありますか?

私は一種の事を説明しましたので、私は私よりも全体的なソリューションが良いと聞いています(多分、間違った方法でケースについて考えているかもしれません)。これは他の可能な答えでしょう。

答えて

0

最も簡単な方法は、javascriptを使用してフォームを検証することです.jQueryを使用してエラーのあるフィールドを強調表示することができます。提出がどのように失敗したかを視覚的にフィードバックします。実際には、アクションが成功することができて幸せになるまで、ユーザーはフォームを送信し(したがってページを離れる)ことを許可しません。私は、成功した提出を受け取ったら、別のページにリダイレクトすることを前提としています。

javascriptを使用するための記事やハウツーがあり、実際にはフォームの検証にjQueryが使用できます。サイトをリーンかつ平均的に保つには、CMSコントローラのオーバーライドを提供し、フォーム検証を使用する特定のページのスクリプトのみをエンキューします。

妥当性検査が複雑な場合は、AJAXを使用し、モジュールの呼び出しを介してページのフォームセクションをリロードすることをお勧めします。フックはこの種のものにはあまり適していないので、cmsページにコードを注入する別のメソッドを使用することを検討するとよいでしょう。私はこの代替アプローチについていくつかの記事を書いてきました。これは私が見つけられるものですprestashop blog

関連する問題