web-dev-qa-db-ja.com

カスタムコンポーネントルーティングとメニューポイントによる支援が必要

カスタムコンポーネントルーターを作成しようとしています。私はこれらの管理者とサイトのURI構造を持っています:http://localhost/administrator/index.php?option=com_{component_name}&...およびhttp://localhost/index.php/{language_code}/{an_alias}/...。これらのURI構造をプログラムで取得する方法はありますか?管理部分は大丈夫ですが、サイト部分によって私は失われます。生成されたエイリアスでメニューポイントを追加できますが、これは予測できません。 joomlaサイトルーターからこの情報を取得する方法、またはメニューポイントに制約を適用する方法はありますか?

現在、私はcom_example/views/example/tmpl/default.xml

<?xml version="1.0" encoding="utf-8"?>
<metadata>
    <layout title="COM_CANTEEN_TITLE">
        <message><![CDATA[COM_CANTEEN_DESCRIPTION]]></message>
    </layout>
</metadata>

これは、コンポーネントを指すサイトメニューポイントを追加するのに十分です。これに多言語のメニューポイントのタイトルとエイリアスを追加するといいでしょう。そのため、別のエイリアスでメニューポイントを追加することはできません。実際には、コンポーネントでMVC構造を追跡したくありません。エントリからのリクエストをルーティングして処理したいので、com_example/example.php。このテンプレートxmlファイルをcom_example/Example/presentation/menupoints/可能であれば。

1
inf3rno

ルーターを使用してコンポーネントを検索し、コンポーネントの基本URIを作成することができます。

_$application = JFactory::getApplication();
$router = $application->getRouter();
$componentUri = $router->build('index.php?option=com_example');
_

エイリアスを使用してコンポーネントのメニューポイントを定義した場合、これは管理ページでは_/administrator/index.php?option=com_example_を返し、サイトページでは_/index.php/en/alias_のようなものを返します。メニューポイントを使用せずに_/index.php/en/?option=com_example_ URIを使用してサイトにアクセスすると、このソリューションが適切に機能しないという欠点があります。 404ページにつながる_/index.php/en/component/example/_のようなものを返します。 URIを含むエイリアスでサイトページにアクセスしようとしている限り、これは実際の問題ではありません。

まったく同じことを行うJRoute::_('index.php?option=com_example')コードを使用する別の代替方法。

デフォルトでは、アプリによってインスタンス化されたレガシーコンポーネントルーターがありますが、それを使用する必要はありません。代わりにカスタムルーターを作成することにし、必要な情報を使用してコントローラーとアクションに注釈を付けました。したがって、このアプローチはJava REST Webサービスに似ています)。

Xmlファイルを移動するための解決策を見つける時間がなかったので、今は優先事項ではありません。

0
inf3rno