web-dev-qa-db-ja.com

Joomlaユーザーのための1回限りのフォーム?

カスタムhtml/phpフォームを配置したい登録済みのJoomlaユーザーですが、ユーザーが一度だけ送信したいのですが、ユーザーがform、次に開くときフォームページ、彼はフォームを再度表示しない?代わりに、カスタムメッセージを表示する必要があります(あなたがすでにフォームまたはbla bla bla ...を提出したように)これを達成する方法?

6
saibbyweb

「カスタム」と言うときは、Joomlaメソッドに固執し、これをモジュールまたはコンポーネントにすることを意味します;)

これを行うための最良の方法は、すでに使用しているいくつかの方法を使用することです。つまり、ユーザーオブジェクトを取得します。

したがって、ユーザーがフォームを送信すると、入力したデータだけでなく、$user->usernameを使用してユーザー名も送信されます。今後は、ユーザー名と送信したデータがデータベースに保存されるようになります。

ここで、テーブルからユーザー名を取得するデータベースクエリを作成し、現在ログインしているユーザーと照合する必要があります。ここに小さな例があります:

$db = JFactory::getDbo();
$user = JFactory::getUser();

$query = $db->getQuery(true);
$query->select($db->quoteName('username'));
      ->from($db->quoteName('#__myform'));
      ->where($db->quoteName('username') . ' = '. $db->quote($user->username));
$db->setQuery($query);

$result = $db->loadResult();

if($result) {
    // display custom message
}
else {
    // display form
}

最初にフォームを機能させてから、ユーザーチェックの統合を開始するのはよい考えだと思います。

お役に立てれば

3
Lodder

フォームの生成に使用している拡張機能がわかりません。しかし、それを「Chronoforms」に変更する可能性がある場合は、ここで提案されているように、この拡張機能でこれを行うことができます: http://www.chronoengine.com/forums/posts/t9535/p9535/user -submit-only-once.html

注:クロノフォームを使用しなくても、Joomlaの標準の関数とフレームワークを使用するため、基になるメソッドを使用できます。

これはまさにあなたが探しているものですが、私の見解では、クロノフォームを使用する必要があります。それは、とにかくJoomlaにとって最高のフリーフォーム拡張です。サポートは素晴らしく、よく維持されています。私のサイトでも使用しています。

2

B2J Contactを使用して、フォームにカスタムフィールドを生成します。これは、Bang2Joomチームによって提供される 無料のJoomlaフォームクリエーター コンポーネントです。素敵で簡単なバックエンド!フレンドリーなサポート!

やってみなよ!

ここからダウンロード: http://www.bang2joom.com/joomla-components/b2j-contact

0
Gev Balyan