1

この質問にどのようなタイトルが使われているのかさえわかりません。私は Web プログラミングを始めていますが、これを行うためにどのテクノロジを使用すればよいかさえわかりません。

symfony2 にドクトリンを含むデータベースがあります。このデータベースにはギャラリーがあり、各ギャラリーには画像があります (2 つのテーブルの OneToMany 関係)。

ギャラリーの配列を twig テンプレートに渡し、そこでそれらを選択して表示するので、1 つを選択してギャラリーに画像を追加したり、新しいギャラリーを追加したり、送信ボタンを使用してそれらを削除したりできます。

それは現在、このテンプレートで機能しています:

<select class="listGalleries" id="listGalleries" name='id' size="10">
{% for gallery in galleries %}
    <option value="{{gallery.id}}" >{{gallery.name}}</option>
{% endfor %}
</select>

それはフォームの中に入ります。

今、私がやりたいことは、選択の 1 つの項目をクリックするたびに、同じ Web ページで、選択したギャラリーのすべての画像を表示することです。

どの技術を使えばいいのかわからない。小枝でできますか?ajaxを学ぶ必要がありますか?そのギャラリーに属する写真のデータを読み取るためにデータベースにアクセスする必要があると思いますが、その方法や、symfony2 がより良い解決策を提供してくれるかどうかはわかりません。

すべてのアドバイスをいただければ幸いです。

4

1 に答える 1

0

レンダリング後に出力を変更する方法がないため、小枝では「動的に」行うことはできません。

私の意見では、次の 2 つの方法があります。

twig を使用してギャラリー内をループし、それらを出力してから、ブートストラップ タブのような JavaScript を使用して、オプションを変更するときに各ギャラリーを表示します。ブートストラップでは、次のようにします (gallery->images の関係が $gallery->images にあると仮定します):

<div class="tab-content">
    {% for gallery in galleries %}
        <div class="tab-pane active" id="gallery{{ gallery.id }}">
             {% for image in gallery.images %}
                 <img src="{{ image.url }}" class="img-polaroid">
             {% endfor %}
        </div>
    {% endfor %}
</div>

今のようなjavascriptを使用しています

$("select#listGalleries").change(function () {
    $("select option:selected").each(function () {
        $("#gallery" + $(this).attr('value')).tab('show');
    });
})

それ以外の場合は、ギャラリーからギャラリーを選択した後に ajax を使用してギャラリー画像を返し、ギャラリー画像をページのどこかにレンダリングできます。これは 2 つの方法で行うことができます。symfony 内で html をレンダリングし、javascript を使用して出力をページに配置するか、json のみを返し ( thisのようなものを使用)、javascript 内で html を作成します (私は個人的に多くのpureを使用します)。

于 2013-07-12T07:52:09.353 に答える