Backend\Core\Engine\Model::createURLForAction PHP Method

createURLForAction() public static method

If you don't specify a module the current module will be used. If you don't specify a language the current language will be used.
public static createURLForAction ( string $action = null, string $module = null, string $language = null, array $parameters = null, boolean $urlencode = true ) : string
$action string The action to build the URL for.
$module string The module to build the URL for.
$language string The language to use, if not provided we will use the working language.
$parameters array GET-parameters to use.
$urlencode boolean Should the parameters be urlencoded?
return string
    public static function createURLForAction($action = null, $module = null, $language = null, array $parameters = null, $urlencode = true)
    {
        // redefine variables
        $action = $action !== null ? (string) $action : null;
        $module = $module !== null ? (string) $module : null;
        $language = $language !== null ? (string) $language : BackendLanguage::getWorkingLanguage();
        $queryString = '';
        // checking if we have an url, because in a cronjob we don't have one
        if (self::getContainer()->has('url')) {
            // grab the URL from the reference
            $url = self::getContainer()->get('url');
            // redefine
            if ($action === null) {
                $action = $url->getAction();
            }
            if ($module === null) {
                $module = $url->getModule();
            }
        }
        // error checking
        if ($action === null || $module === null) {
            throw new \Exception('Action and Module must not be empty when creating an URL.');
        }
        // lets create underscore cased module and action names
        $module = mb_strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $module));
        $action = mb_strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $action));
        // add offset, order & sort (only if not yet manually added)
        if (isset($_GET['offset']) && !isset($parameters['offset'])) {
            $parameters['offset'] = (int) $_GET['offset'];
        }
        if (isset($_GET['order']) && !isset($parameters['order'])) {
            $parameters['order'] = (string) $_GET['order'];
        }
        if (isset($_GET['sort']) && !isset($parameters['sort'])) {
            $parameters['sort'] = (string) $_GET['sort'];
        }
        // add at least one parameter
        $parameters['token'] = self::getToken();
        // add parameters
        $i = 1;
        foreach ($parameters as $key => $value) {
            // first element
            if ($i == 1) {
                $queryString .= '?' . $key . '=' . ($urlencode ? rawurlencode($value) : $value);
            } else {
                $queryString .= '&' . $key . '=' . ($urlencode ? rawurlencode($value) : $value);
            }
            ++$i;
        }
        // build the URL and return it
        return self::get('router')->generate('backend', array('_locale' => $language, 'module' => $module, 'action' => $action)) . $queryString;
    }

Usage Example

 /**
  * Validate the form
  *
  * @return  void
  */
 private function validateForm()
 {
     // is the form submitted?
     if ($this->frm->isSubmitted()) {
         // cleanup the submitted fields, ignore fields that were added by hackers
         $this->frm->cleanupFields();
         // validate fields
         $this->frm->getField('title')->isFilled(BL::err('TitleIsRequired'));
         // validate meta
         $this->meta->validate();
         // no errors?
         if ($this->frm->isCorrect()) {
             // build item
             $item['title'] = $this->frm->getField('title')->getValue();
             $item['language'] = BL::getWorkingLanguage();
             $item['meta_id'] = $this->meta->save();
             $item['sequence'] = BackendSlideshowModel::getMaximumCategorySequence() + 1;
             // insert the item
             $item['id'] = BackendSlideshowModel::insertCategory($item);
             // trigger event
             BackendModel::triggerEvent($this->getModule(), 'after_add_category', array('item' => $item));
             // everything is saved, so redirect to the overview
             $this->redirect(BackendModel::createURLForAction('Categories') . '&report=added-category&var=' . urlencode($item['title']) . '&highlight=' . $item['id']);
         }
     }
 }
All Usage Examples Of Backend\Core\Engine\Model::createURLForAction