0

私はルーティングに頭を悩ませようとしてきました。そのため、いじくり回すための小さなアプリケーションを構築しましたが、問題に遭遇することができました。

テスト全体の目標は、URL「hostname / content / index / add」を非表示にして、「hostname / wms / content/add」のようなユーザーにとってより理解しやすいURLに変換することでした。

しかし、奇妙な理由で、$ this-> url()メソッドを使用してリダイレクトできません。しかし、どういうわけか、somelinkのような通常のリンクは機能します。

application.iniにいくつかのルートを作成して、どのように機能するかをテストしました。それは空想ではありません...

resources.router.routes.contentroute.route = "/wms/content"
resources.router.routes.contentroute.defaults.module = content
resources.router.routes.contentroute.defaults.controller = index
resources.router.routes.contentroute.defaults.action = index

resources.router.routes.vacaturesroute.route = "/wms/vacatures"
resources.router.routes.vacaturesroute.defaults.module = vacatures
resources.router.routes.vacaturesroute.defaults.controller = index
resources.router.routes.vacaturesroute.defaults.action = index

したがって、hostname / wms / contentと入力すると、コンテンツモジュールのIndexControllerとそのIndexActionにリダイレクトされます。これは、このようなコンテンツモジュールを指すビュー内のすべてのリンクで正常に機能します

<a href='wms/content/'> link </a>

ただし、そのページのhostname / wms/contentでのIndexControllerの特定のアクションに実際にリダイレクトする3つのリンクでは機能しません。

<a href="<?php echo $this->url(array('controller'=>'index','action'=>'add'));?>">Add new content</a>

IndexControllerの追加アクションに実際にリダイレクトする代わりに、hostname / wms / contentにリダイレクトされますが、これは私がアクセスしているページです。

なぜこれが起こっているのか、そしておそらくこれを解決する方法を知っている人はいますか?それとも私はこれに完全に間違った方法でアプローチしていますか?

4

2 に答える 2

1

まず、ルートは静的なルートです。それらを次のように置き換える必要があります。

resources.router.routes.contentroute.route = "/wms/content/:action/*"
resources.router.routes.contentroute.defaults.module = content
resources.router.routes.contentroute.defaults.controller = index
resources.router.routes.contentroute.defaults.action = index

次に、ルートの名前を指定し、reset引数にtrueを渡す必要があります。

$this->url(
  array('module'=>'content', 'controller'=>'index','action'=>'add'), 
  'contentroute', 
  true
);
于 2012-04-25T08:23:06.147 に答える
0

代わりにこれを試してください

<a href="<?php echo $this->url(array('controller'=>'index','action'=>'add','module'=>'xyz'),null,true);?>">Add new content</a>

xyzをモジュール名に置き換えます。

于 2012-04-25T07:36:12.700 に答える