6

私はいつも、リンクを作成するためのこれらの組み込みのSymfony関数を忘れがちです。

4

4 に答える 4

9

アプリケーション全体でユーザーフレンドリーなURLを使用することが目標である場合は、次のアプローチを使用してください。

1)アプリケーションのrouting.ymlファイルにモジュール/アクションのルーティングルールを作成します。次の例は、アプリケーションの最新の質問を表示するアクションのルーティングルールであり、デフォルトでページ1(ポケットベルを使用)になっています。

recent_questions:
   url:    questions/recent/:page
   param:  { module: questions, action: recent, page: 1 }

2)ルーティングルールを設定url_for()したら、テンプレートのヘルパーを使用して送信URLをフォーマットします。

<a href="<?php echo url_for('questions/recent?page=1') ?>">Recent Questions</a>

この例では、次のURLが作成されますhttp://myapp/questions/recent/1.html

3)着信URL(リクエスト)はルーティングシステムによって分析され、ルーティングルール構成でパターン一致が見つかった場合、名前付きワイルドカード(つまり:/page、URLの一部)がリクエストパラメーターになります。

link_to()ヘルパーを使用して、HTML<a>タグを使用せずにURLを出力することもできます。

于 2008-08-30T15:08:25.020 に答える
1

このアドバイスは symfony 1.0 向けです。おそらくそれ以降のバージョンで動作します。

sfAction クラス内で:

文字列 genUrl($parameters = array(), $absolute = false)

例えば。$this->getController()->genUrl('yourmodule/youraction?key=value&key2=value', true);

テンプレート内:

これにより、通常のリンクが生成されます。

string link_to($name, $internal_uri, $options = array());

例えば。link_to('私のリンク名', 'yourmodule/youraction?key=value&key2=value');

于 2008-08-29T15:02:37.370 に答える
0

さらに、そのURLを含むクエリ文字列が実際に必要な場合は、次を使用します。

link_to('My link name', 'yourmodule/youraction?key=value&key2=value',array('query_string'=>'page=2'));

そうしないと、URLの一部としてルーティングしようとし、アクションが中断する可能性があります。

于 2008-12-16T18:26:07.677 に答える
0

最初にルールを定義せずに URL を直接生成できます。

アクションで URL を生成したい場合は、generateUrl()ヘルパーを使用できます。

$this->generateUrl('default', array('module'=>'[ModuleName]','action'=>'[ActionName]'))

テンプレートで URL を生成する場合は、 url_for()ヘルパーを使用できます。

url_for('[ModuleName]/[ActionName]', $absolute)

$absolute を true/false に設定します。表示したい場合は echo を忘れずに使用してください。

しかし、リンク(のようなもの)を作成したい場合は<a href=""></a>link_to()ヘルパーが行います。

于 2011-11-08T14:34:46.700 に答える