サイト側のコンポーネントを書いていて、ルーターに問題があります。私は1つのコンポーネントに2つのビューを持っていますが、どちらにもdefault.phpテンプレートとdefault.xmlが1つだけあり、各ビューのメニュータイプを定義します(たとえば、ビューを呼び出してみましょう(1)および(2))。また、サイトでオンになっているSEFです。
したがって、最初のビュー(1)はURLに依存しません。テキスト情報のみが表示されます。
2番目のビュー(2)もDBからのデータを示しています。新しいパラメーター(例:_&cityid=5
_)を使用してユーザーを自分自身に渡し、他の種類のデータ(同じDBクエリですが、この例では'... WHERE (...) AND cityid="5"'
)。
サイトに2つのページ(メニュー項目)があり、それぞれ最初(1)と2番目(2)のビューがあります。
しかし、Router.phpを書き始めたとき、[component]BuildRoute(&$query)
関数のパラメーター$ queryに_$query['view']
_メンバーが含まれていないことがわかりました。 'option'と 'Itemid'が含まれていますが、 'view'メンバーがないため、関数の結果に渡すことができません(そのため、_[component]ParseRoute
_で同じ状況が発生します。 「view」パラメーター。Joomlaitに渡して正しいビューを表示することはできません(最初(1)または2番目(2)))。したがって、「view」パラメーターを忘れると、Joomlaはデフォルトのビューを表示します。これは、私の場合は最初(1)のビューですが、2番目(2)のビューにする必要があります(上記を参照)。
追伸実際、JRequest::getVar('view')
は正しい値を返しますが、_$query
_配列には渡されません。
追伸私がJoomlaを初めて使用するため、私が何か間違ったことをしているのかもしれません。次に、私が上で説明したモデルを実現するのを手伝ってください。
事前にTHX。
BuildRoute関数は、渡される情報をすべて取得します。コンポーネントでURLをどのように作成していますか?このような?
$url = JRoute::_('index.php?option=com_mycomponent&view=myview&task=mytask&id=1');
上記の場合、ビューパラメータはurl構造で渡されるため、BuildRoute関数はビューパラメータの取得方法を認識しています。ビューパラメータを渡さないと、取得されません。
メニュー項目を使用してアクセスする場合は、メニュー項目のリンク値を確認してください。
一方、ParseRoute関数はその値をsef urlから取得します。例えば:
uRL:mywebsite.com/someslug/someother/1-idone.html
上記のURLには、someslug、someother、1-idoneの3つのパラメーターがあります。したがって、ParseRoute関数でそれらをどのように解析するかはあなた次第です。つまり、view/task/idまたはtask/view/id、またはコンポーネントがBuildRoute関数を使用してコンポーネントを生成している順序です。
上記のURL構造は単なる例であり、ベースラインではありません。ルートを構築し、逆の方法で解析する方法は、完全にあなた次第です。
Joomla 3以降を使用している場合のいくつかの提案。