21

FOSJSRoutingBundle で本当に奇妙な問題に直面しています:

まず第一に、私の設定は次のとおりです。私は Symfony 2.0.23 と JQuery を使用し、Windows 7 64 ビットと WAMP (Apache 2.4.2 および PHP 5.4.3) を使用しています。私は FOSJSRoutingBundle の github からすべての設定を行い、自分のルートを公開しました ((FOSJSRoutingBundle の github で、ここと別のフォーラムで) グーグルで見つけることができるほとんどすべての関連する問題は、人々がルートを公開していないためでしたが、試してみましたphp app/console fos:js-routing:debug とルートが表示されます)。js がレイアウトに追加されます (最後にレイアウトのコード)。

js でルートの URL を生成しようとしましたが、最初は 2 つの異なるルートを生成したかったのですが、テストのために以下の js コードを作成しました。

    //Code inside this function is working
    $("select").change(function () {
      param=this.options[this.selectedIndex].value;
      test1=Routing.generate('myBundle_step3', { myParam: param });
      alert(test1);
      window.location=Routing.generate('myBundle_step2');
    });
    //Code inside this one is also working
    $('input[type="checkbox"]').change(function() {
      test=Routing.generate('myBundle_step2');
    }).change();
    //This is not working
    test=Routing.generate('myBundle_step2');
    alert(test);

このコードでは、「ルート myBundle_step2 が存在しません」という JavaScript エラーが発生します。最初の部分はまだ機能しますが (アラートによってリンクが作成され、リダイレクトがうまくいきます)。2 番目の関数を削除すると、Javascript エラーは発生しなくなります。

2 番目の関数で step2 を step3 に置き換えると、エラーは「ルート myBundle_step3 が存在しません」になります。キャッシュをクリアして php app/console asset:install --symlink を再度実行しようとしましたが、結果はありません。

コントローラーに対応するコードは次のとおりです (実際のコードは少し長く、関連性があるとは思いません。

    namespace my\Bundle\Controller;
    class IndividuController extends Controller
    {
      public function step2Action() {
        Some code
      }
      public function step3Action($myParam) {
        Some code
      }
    }

bundle に関連する routing.yml 構成ファイル:

    myBundle_step2:
      pattern: /step/2
      defaults: {_controller: myBundle:Individu:step2}
      options:
        expose: true
    myBundle_step3:
      pattern: /step/3/{myParam}
      defaults: {_controller: myBundle:Individu:step3}
      options:
        expose: true

app/config/routing.yml ファイル:

    fos_js_routing:
      resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"

    myBundle:
      resource: "@myBundle/Resources/config/routing.yml"
      prefix:   /

レイアウトの関連情報:

     <!-- jQuery via Google + local fallback, see h5bp.com -->
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">    </script>
        <script>window.jQuery || document.write('<script src="js/jquery-1.7.1.min.js"><\/script>')</script>
           {% javascripts 'bootstrap/js/bootstrap.js'
                        'bundles/fosjsrouting/js/router.js'
                        'bundles/crrisuaps/js/suaps.js' %}
               <script type="text/javascript" src="{{ asset_url }}"></script>
           {% endjavascripts %}
        <script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>
       </body>
    </html>

php app/console router:debug の結果 (関連情報のみを残しました + 念のため未定義の変数通知を残しました。これは、このライブラリを追加した後に得た通知ですが、それでもライブラリは機能し、問題が発生する可能性はないと思いますここから来る:

C:\wamp\www\suapsRepo\suaps>php アプリ/コンソール ルーター:デバッグ

注意: 未定義の変数: C:\wamp\www\suapsRepo\suaps\vendor\html2 pdf_class\tcpdfConfig.php の 80 行目の kPathUrl

コール スタック: 0.0070 231536 1. {main}() C:\wamp\www\suapsRepo\suaps\app\console:0 0.0209 685656 2. require_once('C:\wamp\www\suapsRepo\suaps\app\bootstr ap .php.cache') C:\wamp\www\suapsRepo\suaps\app\console:10 0.0212 701752 3. require_once('C:\wamp\www\suapsRepo\suaps\app\autoloa d.php') C: \wamp\www\suapsRepo\suaps\app\bootstrap.php.cache:3 0.1335 2998152 4. require_once('C:\wamp\www\suapsRepo\suaps\vendor\html 2pdf\html2pdf.class.php') C: \wamp\www\suapsRepo\suaps\app\autoload.php:51 0.1379 3361792 5. require_once('C:\wamp\www\suapsRepo\suaps\vendor\html 2pdf_class\myPdf.class.php') C:\wamp \www\suapsRepo\suaps\vendor\html2pdf\html2p df.class.php:19 0.1385 3393792 6.require_once('C:\wamp\www\suapsRepo\suaps\vendor\html 2pdf_class\tcpdfConfig.php') C:\wamp\www\suapsRepo\suaps\vendor\html2pdf_class\myPdf.class.php:12

[ルーター] 現在のルート

    Name                                            Method Pattern
    _assetic_55f0319                                ANY    /css/55f0319.css
    _assetic_55f0319_0                              ANY    /css/55f0319_bootstrap_1.
    css
    _assetic_55f0319_1                              ANY    /css/55f0319_bootstrap-re
    sponsive_2.css
    _assetic_55f0319_2                              ANY    /css/55f0319_style_3.css
    _assetic_3608a04                                ANY    /js/3608a04.js
    _assetic_3608a04_0                              ANY    /js/3608a04_bootstrap_1.j
    s
    _assetic_3608a04_1                              ANY    /js/3608a04_router_2.js
    _assetic_3608a04_2                              ANY    /js/3608a04_suaps_3.js

    fos_js_routing_js                               ANY    /js/routing.{_format}
    myBundle_homepage                        ANY    /

    myBundle_inscription_etape1              ANY    /inscription/etape/1
    myBundle_inscription_etape2              ANY    /inscription/etape/2
    myBundle_inscription_etape3              ANY    /inscription/etape/3/{dis
    ciplineSelection}

php app/console fos:js-routing:debug の結果 (PHP 通知を削除しましたが、作成するすべてのコマンドで発生します):

    C:\wamp\www\suapsRepo\suaps>php app/console fos:js-routing:debug
    [router] Current routes
    Name                               Method Pattern
    crrisuapsBundle_inscription_etape2 ANY    /inscription/etape/2
    crrisuapsBundle_inscription_etape3 ANY    /inscription/etape/3/{disciplineSelect
    ion}

編集:また、それが関連しているかどうかはわかりませんが、「php app/console fos:js-routing:debug myBundle_step2」を試すと、次のphpエラーが発生します:

[エラー例外] 警告: Symfony\Bundle\FrameworkBundle\Command\RouterDebugCommand:outputRoute() の引数 3 がありません。C:\symfonyDirectory\vendor\bundles\FOS\JsRoutingBundle\Command\RouterDebugExposedCommand.php の 62 行目で呼び出され、定義されていますC:\serverDirectory\vendor\symfony\src\Symfony\Bundle\FrameworkBundle\Command\RouterDebugCommand.php 行 98

4

3 に答える 3

53

私もこの問題を抱えていました。options.exposeルーティング構成でパラメーターを設定すると、解決しました。

ルーティング.yml

cart_edit:
    pattern:  /Cart/edit
    defaults: { _controller: CartCartBundle:Default:cart_edit }
    options:
        expose: true

my.js

var url = Routing.generate('cart_edit');
$.post(url, function(data) {
      //do somthing
});

必要に応じて変更してください。これで問題が解決することを願っています。

于 2014-03-13T12:58:14.643 に答える
6

同じ問題があり、問題は構成ファイルにありました。これを確認してみてください:

# app/config/config.yml
fos_js_routing:
    routes_to_expose: [ myBundle_step2, myBundle_step3, ... ]
于 2014-01-28T13:15:30.213 に答える