私のカスタムコンポーネントコントローラーには関数save()があります。最後にメッセージを表示し、URLにリダイレクトします
$this->setMessage(JText::_('SOME_TEXT'));
$this->setRedirect(JRoute::_('index.php?option=com_foo&view=foo', false));
次のことを行うのに問題があります。
1. JText文字列の代わりにカスタムフィールドのメニューパラメータを使用します。関数内でこれを使用する場合:
$app = JFactory::getApplication();
$menu = $app->getMenu();
$active = $menu->getActive();
$itemId = $active->id;
$message = $active->params->get('message');
私は通知とエラーを受け取ります:
Notice: Trying to get property of non-object...
Fatal error: Call to a member function get() on a non-object...
$ messageは、xmlファイルで定義されたカスタムメニューフィールドの名前です。ビューから直接呼び出す場合は、問題ありません。
2.アクティブなメニューitemidを取得し、setRedirect()内で使用します。
次のように使用すると、URLに空のitemidが表示されます。
$app = JFactory::getApplication();
$menu = $app->getMenu();
$active = $menu->getActive();
$itemId = $active->id;
$this->setRedirect(JRoute::_('index.php?option=com_foo&view=foo&Itemid='.$itemId, false));
コンポーネントのメニューパラメータの呼び出しに関する多くの情報を見つけましたが、どれも役に立ちませんでした