私はYiiのr1.8にCustom URL Rule Classesを活用しようとしていますYiiはカスタムURLのルール・クラスを使用してr1.8
私は表示代わりにORGS /ビュー/ ID/24のようなものを取るとしようとしていますdbのNameで識別される組織の名前(つまり、www.mysite.com/orgs/view/id/24をwww.mysite.com/jaysshopに動的に変更する)。残念ながら私はそれが動作するようになっていません。ここで
は私のコードです:class OrgsUrlRule extends CBaseUrlRule
{
public $connectionID = 'db';
public function createUrl($manager,$route,$params,$ampersand)
{
if ($route==='orgs/view/id') //even tried 'orgs/view' or 'orgs/index'
{
if (isset($params['Name']))
return $params['Name'];
else if (isset($params['Name']))
return $params['Name'];
}
return false;
}
public function parseUrl($manager,$request,$pathInfo,$rawPathInfo)
{
if (preg_match('%^(\w+)(/(\w+))?$%', $pathInfo, $matches))
{
}
return false;
}
}
urlManager:
array(
'class' => 'application.components.OrgsUrlRule',
'connectionID' => 'db',
),
あなたがここでやりたいことは完全にはっきりしていません。顧客がorgs/view/id/24のURLを入力していて、彼をjaysshopにリダイレクトしたいのですか?またはあなたのコード内からURLを表示しようとしていますか?私はあなたがcreateUrl関数について間違った考えを持っているかもしれないと思います。これは、サイトのどこかでcreateUrl機能を使用するときに使用されます。実際にページビューを取得して、URLを「翻訳」したい場合は、代わりにparseUrl関数が必要です。 – Blizz
@Blizz私はあなたが言っていることを理解していますが、Yii r1.8(上にリンクされています)のこの新しい機能により、URLリライトを処理するurlManagerが表示されています。あなたがwww.mysite.com/events/indexの代わりにwww.mysite.com/eventsと入力するようにするには、urlMangerの 'events' => 'events/index'のように使用できます。私が読んでいるように、カスタムURLルールクラスは、より広範で細かいスケールで同じことをすることができます。 – enfield
@Blizzこのフォーラムの質問では、[ユーザー名付きのURLが必要です、facebookに似ています](http://www.yiiframework.com/forum/index.php?/topic/10829-need-of-url-with-usernameame私は変数を使って何をしたいのかを考え出したが、これはYii r1.8の追加機能のリリース前であって、理解して使用しようとしている。 – enfield