0

誰かがrouting.ymlの次の「クラス」エントリがSF1.0で可能かどうか知っていますか?getInstance()それを追加して、やなどのいくつかのメソッドをオーバーライドしようとしましgetCurrentRouteName()たが、手動で呼び出しているにもかかわらず、呼び出されることはありません。

checkout_landing:
  class: CustomRoute # Can I do this in SF1.0?
  url: /checkout/landing/:k/*
  param: { module: sharedCheckout, action: landing }

この「ルートごとの」カスタムクラス構成をSF1.2に実装しましたが、SF1.0では機能していないようです。SF1.0の場合、すべてのルートに影響するカスタムクラスエントリをfactories.ymlファイルに追加する必要があると思います。

ボーナス質問:SF1.0で「extra_parameters_as_query_string」をエミュレートできる人はいますか?現在、上記のurlエントリを使用すると、GETパラメータはpseduoサブディレクトリに変換されます。たとえば、次のようなクエリ文字列です。

$params = array('foo' => 'bar', 'pet' => 'dog');

$url = sprintf('@checkout_landing?%s', http_build_query($params));

// Looks like:

http://example.com/checkout/landing/foo/bar/cat/dog

// I need it to look like

http://example.com/checkout/landing?foo=bar&pet=dog
4

2 に答える 2

1

ご想像のとおり、sf1.0では、sfRouting(in factories.yml)のカスタム拡張に対して提案した妥協案を作成するか、sf1.2+の機能を追加することなくこれらのことを行うことはできませんextra_parameters_as_query_string

最も簡単なオプションは、sf1.3の最後の安定バージョン(sf1.3.11)にアップグレードし、バンドルsf10CompatPluginを使用して、sf1を追加しながら既存のアプリで使用するsf1.0機能をエミュレートすることです。 sf1.3コアに必要な2+機能。

これを行うことによる互換性エラーはほとんどなく、私は何十ものプロジェクトで問題なく使用してきました。

于 2013-03-11T22:20:30.447 に答える
0

コンパイルされたキャッシュコードでルートを参照しましたが、SF1.0には、yamlファイルの「Class」エントリに基づくカスタムオブジェクト参照がないことを確認しました。ただし、SF1.4で生成されたルートのコンパイル済みキャッシュコードを表示すると、カスタムオブジェクトを使用できます。

アップグレードはオプションではないため、私はURLを昔ながらの方法で手動で生成することを選択しました。

于 2013-03-14T23:36:31.263 に答える