私はJoomlaを初めて使用し、フォルダーcliでスクリプトを作成しています。カテゴリをフェッチしてカテゴリのURLを返す管理コンポーネントのヘルパーファイルを呼び出しています。
ヘルパーの機能は問題なく、管理メニューから実行するとうまく機能します。
この問題は、CLIスクリプトで使用したときにカテゴリURLが生成されないことに関連しています。
_$app = JApplication::getInstance('site');
$router = &$app->getRouter();
$newUrl = ContentHelperRoute::getCategoryRoute('10');
$newUrl = $router->build($newUrl);
$url = $newUrl->toString();
$url = str_replace('/administrator', '', $url);
_
cLIで使用すると、$router = &$app->getRouter();
の厳密な標準に対してエラーがスローされます
私も試しました
JRoute :: _(ContentHelperRoute :: getCategoryRoute('10 '));
アプリケーションの起動に失敗したというエラーをスローするだけです。
カテゴリのSEF URLを取得して、CLIファイルでも返されるようにしたい。
私のcliコード:
_class Abc extends JApplicationCli
{
public function doExecute()
{
JFactory::getSession()->gc();
JLoader::register('AbcHelper',JPATH_BASE.'/administrator/components/com_abc/helper.php');
$url = AbcHelper::getUrl();
echo $url;
}
}
JApplicationCli::getInstance('Abc')->execute();
_
helper.php
_public static function getUrl()
{
$url='';
$app = JApplication::getInstance('site');
$router = &$app->getRouter();
$newUrl = ContentHelperRoute::getCategoryRoute('10');
$newUrl = $router->build($newUrl);
$url = $newUrl->toString();
$url = str_replace('/administrator', '', $url);
return $url;
}
_
どんな助けでもありがたいです。
ファクトリを使用してサイトアプリケーションを取得します:ContentHelperRoute
がないようにも見えます。インポートしました。 getRouter()
を呼び出す前にアンパサンドを削除することで、厳密な基準を解決できます。
_public static function getUrl()
{
// Register required classes.
JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');
// Get site router.
$router = JFactory::getApplication('site')->getRouter('site');
// Build URI object.
$url = $router->build(ContentHelperRoute::getCategoryRoute('10'));
return $url->toString();
}
_
私も試しました
JRoute :: _(ContentHelperRoute :: getCategoryRoute('10 '));
アプリケーションの起動に失敗したというエラーをスローするだけです。
JRoute::_()
は現在のアプリケーションに基づいており、CLIにルーターがないため、CLIでは機能しません。 JRoute::link()
は機能するはずですが、現時点では明らかに同じ問題があります。