2011-02-05 10 views
0

ねえ。 メニューコンポーネントの「現在の」クラスを作成し、メニューを作成しました。現在のクラスを調べるには、$this>getContext()->getRouting()->getCurrentRouteName();を使用することを推奨しました。これを行うためには、存在するすべてのメニュー要素のルートを設定する必要がありました。このルートに問題がありますか?

これまでのところ、私は2つの要素があるとします.1つはフロントページ用、もう1つは顧客用です。私がフロントページをブラウズしているときは、どのようなアクションとパラメータが必要かを問わず、上記のコードが "フロントページ"を返すことを望みます。同じことが顧客のためになります。今

顧客のための私のルール、以下の通りです: のrouting.yml

 
customer: 
    param: { module: customer } 

は私がURLを設定することは重要ではないと思った、私はすでに顧客であることをモジュールに指定されています。メニュー要素は、使用されるアクションに関係なく「現在の」クラスを持つ必要があります。私がリンクしてどのように

:今、 "顧客/ some_action" に行く

 
if ($current == $name){ 
    echo link_to($name, $link, array("class" => "selected")); 
}else { 
    echo link_to($name, $link); 
} 

リンク($リンク)が動作しない、彼らは同じくらい、 "/" に表示されます。だから私は$リンクの周りにurl_forを使うと思っていたが、どちらもうまくいきませんでした。

ルーティングルールに問題がある可能性があります。手動で/ customer/newと入力すると、そのページが表示されるためです。テンプレートの私が$this>getContext()->getRouting()->getCurrentRouteName();を書き出すと、デフォルトと表示されます。だから私のルールは間違いなく全く働かない。私は他のルールも試しましたが、誰も働かせていません。そのトリックは、モジュールの顧客の下にあるもののために働く1つのルールを作ることです。

はい、私はそれぞれのルールを変更した後にキャッシュをクリアします。

ありがとうございます。

EDIT: 私はルーティングルールを機能させましたが、カスタマーモジュールの下のすべてのアクションではありません。私はそれぞれの行動のルールを作る必要があります。しかし、リンクはまだ壊れている、彼らは "/"を示しています。

私の新しいルール:

 
customer_index: 
    url: /:module 
    param: { module: customer, action: index } 

customer_new: 
    url: /:module/:action 
    param: { module: customer, action: new } 

これらのリンクのどれも働かない: echo link_to("Customers", "@customer_index", array("module" => "customer"));

echo link_to("New customer", "@customer_new", array("module" => "customer"));

答えて

1

うん、これは私もそれを数回やった方法です。 getCurrentRouteName()を使用するには、別のルーティングルールが必要です。

リンクに問題があるということは、このように「モジュール」パラメータを渡すことができないことです。これはSymfony link_to() helperの有効なパラメータではありません。代わりに、あなたはそれをこのように渡すことができます。

link_to('Customers', '@customer_index?url_variable=something'); 

customer_index: 
    url: /:url_variable 
    param: { module: customer, action: index, url_variable: some_default_value } 

をデフォルト値はオプションですが、変数を渡さない場合のlink_toヘルパーは、エラーがスローされますと、ルートはそれのためのデフォルト値はありません。また

、あなたは上記のコードでは、それは二回間違って持っているとしてだけでこれを指摘:

$this>getContext()->getRouting()->getCurrentRouteName(); 
...should be: 
$this->getContext()->getRouting()->getCurrentRouteName(); 
関連する問題