1

これが私の状況です。5つのjquery-uiタブがあるページがあり、そのうちの3つには、データ用にphpによって生成されたテーブルが含まれています。各タブには、日付に応じてフィルタリングする一連の入力があります。テーブルには独自のフォームと更新ボタンがあります。今、私が達成したいのは、リフレッシュしてコントローラーに戻ったら、押したボタンに応じて対応するフラグメントを追加したいということです。

例:最初のタブから更新ボタンをクリックした場合は#tabs-1を追加し、2番目のタブの場合は#tabs-2を追加します。

今、私は私ができることを知っています:

$_SERVER['SCRIPT_URI'] = $_SERVER['SCRIPT_URI'] . "#tabs-2";

正しいURLが得られますが、実行時にブラウザをそこに移動させるにはどうすればよいですか?これを行う方法はありますか?

これが私のコントローラーの一部で、メインのコントローラーです。

class PageOptimisationV2C {

public static function main() {
    $class = __CLASS__;
    $c = new $class;

    $c->get();
}

public function get() {
    $this->display();
}

private function display() {
    $tpl = new PageOptimisationV2V();

    $client = ConsulterClient::getClientByNoClient(isset($_GET['cid']) ? $_GET['cid'] : 0);
    $tpl->client = $client;

    if(isset($_GET['cid'])){

        $tpl->StatsLignesCellulaire = self::buildCellStatsReport();
    }

    $_SERVER['SCRIPT_URI'] = $_SERVER['SCRIPT_URI'] . "#tabs-2";


    $tpl->display();
} 
}

そして、それは続き、ページを表示します。押された送信ボタンによると、ページの断片に到達するための最適な解決策は何でしょうか。

ページがどのように見えるかを示すためにjsFiddleを作成しようとしましたが、乱雑になりすぎて、CSSを正しく機能させることができませんでした。

情報のすべての詳細は高く評価されています。

4

2 に答える 2

1

PHPでこれを行う唯一の方法は、リダイレクトを行うことです。

header('Location: ' . $_SERVER['REQUEST_URI'] .'#tabs-2');

もちろん、これにより別のリクエストが発生し、フローでいくつかの回避策を実行する必要がありますが、新しい URL をブラウザに送り返す唯一の方法です。

これは実行時の PHP メソッドではありませんが、選択した Javascript を埋め込むこともできます。次に例を示します。

var index = $.index($(<?PHP echo $tab; ?>));
$('#tabs ul').tabs('select', index);

通常の選択プロセスを通過させます。

次のような隠し要素を埋め込むこともできます

<input type="hidden" name="tab-selected" id="tab-selected" value="tabs-2" />

要素が存在し、値があるかどうかを確認するJavascriptを用意してから、次のようにタブを選択します。

$(function() {
    if ($('#tab-selected').val()) {
        var index = $.index($('#tab-selected').val()));
        $('#tabs ul').tabs('select', index);
    }
});
于 2013-03-11T22:13:21.410 に答える
0

今日、MWJump さんの回答を読みながら、頭をすっきりさせて、何か他のことを考えました。フォームのアクション属性を使用してみませんか。それには理由があります!したがって、フォームごとに(各タブに1つずつあります)、最初のタブaction="#tabs-1"と2番目のタブなどについて、対応するタブのフラグメントになるようにアクション属性を平手打ちしaction="#tabs2"ました...

この特定のケースでは、このソリューションが最も単純で簡単であることがわかりました。

于 2013-03-12T12:26:55.353 に答える