3

Joomla 2.5では、SQLクエリで条件「WHERE」を使用してフォームフィールドタイプ「SQL」を実行するにはどうすればよいですか?

例:

<field name="catid" type="sql" query="SELECT id, title FROM #__table WHERE {condition}" />

joomlaのドキュメントにはこれについて何もありません。このリンクを見つけましたが、SQLクエリ( http://docs.joomla.org/SQL_form_field_type )でWHERE条件を使用することについては何も参照していません。

誰かがJoomlaでこれが可能かどうか教えてもらえますか?

商品のテーブルとブランドに関連するショップのテーブルがあります。1つのショップを編集する場合、そのショップのブランドのすべての製品を含むコンボボックスを表示したいと思います。それは可能ですか?SELECT * FROM #__ products WHERE brand = {編集用に選択したショップに関連付けられているブランドID}これは可能ですか?

カスタムフォームフィールドでこれを行うことができました=)

http://docs.joomla.org/Creating_a_custom_form_field_type

あなたの答えをありがとうRHR!

4

6 に答える 6

3

これが私の解決策です:

次の手順を実行すると、クエリを完全に置き換えることができます。

1)クエリを定義します:

$query = 'SELECT * from table_name WHERE table_id = '.$your_value;

2)フォームフィールド属性を更新します。

$this->form->setFieldAttribute('field_name', 'query', $query);
于 2015-11-19T03:34:06.700 に答える
1

はい、可能です

私が使用した私のコード

<fields name="request">
 <fieldset name="request" >
<field name="id" type="sql" query="SELECT id , title FROM #__table name where published=1" multiple="single" key_field="id" value_field="title" class="inputbox" label="fieldlabel" description="fielddesc" required="true" />
</fieldset> 
</fields>

カスタムフィールドとして別の方法でこれを行うことができます

于 2012-09-29T04:30:18.387 に答える
1

ちょうど同じ問題がありました。少し掘り下げた後、私はそれが実際に可能であると考えました。

1.ステップ-カスタムフォームフィールドが必要です:(私はvssql.phpという名前を付けました)

JFormHelper::loadFieldClass('sql');

class JFormFieldVSSQL extends JFormFieldSQL
{
    /**
     * The form field type.
     */
    public $type = 'VSSQL';

    /**
     * Overrides parent's method
     */
    protected function getOptions()
    {
        // Get the ID
        $query_id = $this->form->getField((string) $this->element['query_id']);

        // Override query
        $this->element['query'] = str_replace('{query_id}', (string) $query_id->value, (string) $this->element['query']);

        return parent::getOptions();
    }
}

2.ステップ-それを使用するには、ホットを知る必要があります。

JForm xmlに次を追加します:

  <フィールド
    name = "field_name"
    type = "vssql"
    query_id = "user_id"
    query = "SELECT id AS value、CONCAT(street、''、city)AS addresss FROM #__ addresses WHERE user_id = {query_id}"
    label="ユーザーアドレスのリスト"
    required = "required" />

SQLクエリでは、プレースホルダー{query_id}は、 query_idで指定されたパラメーターの実際の値(この場合は* user_id *)に置き換えられます。これにより、特定のユーザーに割り当てられたテーブルからアドレスのリストが返されます

于 2013-05-23T20:33:59.637 に答える
1

@WooDzuソリューションのいくつかの更新:

class JFormFieldICategory extends JFormFieldSQL
{

    public $type = 'ICategory';

    /**
     * Overrides parent's method
     */
    protected function getOptions()
    {
        // Get the ID
        $cat_id = $this->form->getField((string) $this->element['cat_id']);

        // Override query
        $this->query = str_replace('{cat_id}', (string) $cat_id->value, (string) $this->element['query']);
        echo $this->query.' test '; //exit();

        return parent::getOptions();
    }

}

タイプはパブリックで、クエリは$this->queryに割り当てる必要があります。よく働く!

于 2015-09-29T11:18:49.603 に答える
0

これは、WHERE条件として(Joomla 2.5+および3.x+で#__extensionsテーブルからユーザープラグインを選択するためにこれを使用しました)私にとっては機能します:

<field name="plugin" type="sql" query="SELECT extension_id as value, name as title FROM #__extensions WHERE type = 'plugin' AND folder = 'user'" />
于 2013-05-24T20:52:32.870 に答える
0

私も同じ問題を抱えていました。変数に基づいてwhere条件を作成することはできず、定数のみを作成できます:(

ただし、form-> setField関数を使用して、フォームフィールドを変更し、ビュー内のフィールドを再ロードできます。このおかげで、フィールドsqlで任意の条件を作成できます。

$NewFieldDefinition=new SimpleXMLElement('<field name="catid" type="sql" query="SELECT id, title FROM #__table WHERE title='.$condition.'" />');
$this->form->setField($NewFieldDefinition, null, true);
于 2015-05-21T10:30:44.823 に答える