0

Joomla 2.5チュートリアルを実行して、カスタムコンポーネントを構築しています。今、私は使用後JToolbar::save()またはJToolBarHelper::cancelそのことに関してリダイレクトに関する問題に直面しています。デフォルトでは、Joomlaは(編集レイアウトから)デフォルトレイアウトにリダイレクトしたいと考えています。しかし、私はそれをしたくありません。別のビューにリダイレクトして戻したい。Joomla 1.5では、コントローラーに関数を追加することでこれを実行していました。

function cancel()
{
    //redirects user back to blog homepage with Cancellation Message
    $msg = JText::_( 'COM_BLOG_POST_CANCELLED' );
    $this->setRedirect( 'index.php?option=com_jjblog&view=jjblog', $msg );
}

これでキャンセル機能がうまく機能するようになりましたが、保存する場合、これははるかに複雑なことです。URLを上書きしたい場合は、コントローラーをモデルにリダイレクトしてから、モデルの相互作用のためにすべてのコードを書き込む必要がありますか?Joomla 1.5の場合のように、URLリダイレクトだけでは少し過剰に見えるのでしょうか?

4

5 に答える 5

3

このような適切なコントローラー名で保存ツールバーコードを追加したことを願っています

  1. JToolBarHelper::save('controllerName.save');
  2. 適切なコントローラーで保存関数を作成します。
  3. フォームにタスクを追加する
  4. 最後に、対応するコンポーネント名でフォーム アクションを追加したことを確認します。

于 2013-01-31T05:32:49.420 に答える
2

あなたはこれを試すことができます-

コントローラーでは、まず、url にリダイレクトするよりも親の保存関数を呼び出します。

function save(){
 parent::save();        
 $this->setredirect('index.php?option=com_mycomponent');
}
于 2013-01-31T06:38:44.040 に答える
1

OK、まったく必要ありませんでした$this->setRedirect。値をに変更する必要がありました

protected $view_list = 'jjBlog';

次に、すべてのリダイレクトをそのリストビューに戻します。

このためのソースリンクはここにあります。

でも、すべての回答をありがとう!

于 2013-01-31T19:26:15.687 に答える
0

view.html.php

protected function addToolbar ()
    {
        JRequest::setVar ('hidemainmenu', false);
        JToolBarHelper::title (JText::_ ('Configuration'), 'configuration.gif');
        JToolBarHelper::save($task = 'save', $alt = 'JTOOLBAR_SAVE');

    }

controller.php

public function save()
    {  
    $mainframe = JFactory::getApplication();
    $mainframe->enqueueMessage (JText::_ ('COM_SOCIALLOGIN_SETTING_SAVED'));    
        $this->setRedirect (JRoute::_ ('index.php', false));
    }
于 2013-01-31T04:06:14.050 に答える
0

使えると思います

global $mainframe;
$mainframe->redirect("index.php?option=com_user&task=activate&activation=".$activation);

次のようなカスタムコンポーネントで joomla のデフォルトの保存機能をオーバーライドしている場合

function save( $task = 'CustomSave', $alt = 'Save' ) // or even same name Save

コントローラー内では、CustomSave をタスクとして使用し、$mainframe をリダイレクトに使用できます。

or
$mainframe = &JFactory::getApplication();
$mainframe->redirect("index.php?option=com_user&task=activate&activation=".$activation);

これがあなたを助けることを願っています..

于 2013-01-31T03:09:16.107 に答える