2011-11-18 10 views
2
I have a problem using my url view helper. I have defined custom routes like so: 
; Index 
routes.domain.type = 'Zend_Controller_Router_Route_Static' 
routes.domain.route = '/' 
routes.domain.defaults.controller = index 
routes.domain.defaults.action = index 

すべてが正常に動作しますが、カスタムURLは正常にアセンブルできません。 私はビューから、次のコードを使用してリンクを追加しようとしました:Zend:URLビューヘルパーによってアセンブルされたURLが正しくありません。

$this->url(array('controller' => 'search', 'action' => 'index'); 

問題は/私は、インデックスコントローラの私のインデックスページにこのコードを使用する場合、返されたURLは、現在のコントローラのURLであるということです私が必要とするものではありません。

答えて

5

と呼ぶことにしますこれは、URLビューヘルパーが最後の有効なルートを選択するためです。あなたが複数のルートを持っている場合は、常にあなたが使用しているルートを定義:

$this->url(array('controller' => 'search', 'action' => 'index'), 'default');

2番目のパラメータは、使用するルートである、第三のオプションパラメータは、すべてがparamsは場合(真/偽)をリセットする必要があります。

+0

Duh ...もちろん、ルートの名前を 'default'に設定する必要があります。 Keesの助けをありがとう! – stefan

1

については、hereのような逆ルートマップを設定する必要があります。

URLを生成する最も推奨される方法は、独自のカスタムURLビューヘルパーを使用することです。

class My_View_Helper_FullUrl extends Zend_View_Helper_Abstract { 

public function fullUrl($url) { 
    $request = Zend_Controller_Front::getInstance()->getRequest(); 
    $url = $request->getScheme() . "://" . $request->getHttpHost(). "/" . $url; 
    return $url; 
    } 
} 

ので、URLを生成するために、あなただけの、

$this->fullUrl('search'); 

が出力、

www.example.com/search

関連する問題