George Wilson
George Wilson

Reputation: 5705

JToolbar::save() redirection

I'm going through the Joomla 2.5 tutorial to build a custom component. Now I'm facing an issue on the redirection after using JToolbar::save() or JToolBarHelper::cancel for that matter. By default Joomla wants to redirect to the default layout (from the edit layout). However I don't want it to do that. I want it to redirect back to another view. In Joomla 1.5 I would have done this through adding the function into the controller - something like

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 );
}

Now that works beautifully for the cancel function, however for save this is a much more complex thing. If I want to overwrite the url do I have to redirect the controller to the model and then write in all the code for the model interaction? Because that seems slightly excessive just for a url redirection like you would in Joomla 1.5?

Upvotes: 0

Views: 5221

Answers (5)

George Wilson
George Wilson

Reputation: 5705

OK it didn't need to $this->setRedirect at all. Just needed me to change the value to

protected $view_list = 'jjBlog';

which then sets the redirects of everything back to that list view.

Source link for this is here.

Thanks for all the responses though!!

Upvotes: 1

Anoop P S
Anoop P S

Reputation: 782

Hope you have added the save toolbar code with the proper controller name like this

  1. JToolBarHelper::save('controllerName.save');
  2. Create a save function in appropriate controller.
  3. Add the task in the form
  4. Finnally make sure you have added form action withthe corresponding component name.

Upvotes: 3

Jobin
Jobin

Reputation: 8282

I think you can use

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

If you are overriding joomla's default save function in your custom component like

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

Inside your controller you can use the CustomSave as the task and use $mainframe for redirect.

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

Hope this may help you..

Upvotes: 0

Irfan
Irfan

Reputation: 7059

You can try this-

In the controller firstly you call the parent save function than redirect to url.

function save(){
 parent::save();        
 $this->setredirect('index.php?option=com_mycomponent');
}

Upvotes: 2

Rakesh Sharma
Rakesh Sharma

Reputation: 13728

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));
    }

Upvotes: 0

Related Questions