+CMS COntent Management Homepage

/ Indeks dokumentacji / Rozbudowa systemu / Rejestrowanie nowych klas w systemie / Wykorzystanie API / Uruchamianie metod na serwerze

Uruchamianie metod na serwerze

Zakładam że użytkownik chce uruchomić metodę na serwerze w której będzie kod wykonujacy jakieś czynności oraz zwracający wynik w postaci XML'a, HTML'a lub w w innej formie.

Pzykładowa klasa:

class MyExampleActions extends SystemFrontController {

    public function myMethodAction() {
        return 'HelloWorld!!!';
    }

}


Jeżeli zarejestrujemy taką klasę i wpiszemy w adres przeglądarki http://moja_domena.com/cms/?__cmd=MyExampleActions.myMethod to uruchomimy metodę myMethodAction. Uwaga ! D wszystkich publicznie dostępnych metod dopisany jest ciąg znaków "Action".

Publicznie dostępne metody można wykorzystać do obsługi zdarzeń Ajaxowych lub innych.

Bronienie dostępu do metod w klasie

Oczywiście czasami chcemy chronić dostęp do naszych metod wtedy wystarczy zaimplementować interfejs IAccessController który wymaga wypełnienia 2 metod: getController i setController.

Przykład takiej implementacji:

class MyExampleActions extends SystemFrontController implements IAccessController {
    

    /**
     * Holds information on the controller.
     *
     * @var SystemCOntroller
     */

    private $oController;

    /////////////////////////////////
    // IAccessController

    /**
     * IAccessController interface method which defines what kind of Controller must be used to
     * guard access to all public methods in this class. Controller may throw SystemException
     * if no access granted.
     *
     * Different controllers may be used depending on what method to be accessed.
     * Use $sMethod param to find out what is going to be executed. $aParam param is an
     * array of Request keys and is mapped against $_REQUEST.
     *
     * @param string Currently run method.
     * @param string Request parameters.
     * @return PublicPageController
     */

    public function getController($sMethod,$aParams) {
        return new PublicPageController();
    }
    /**
     * Sets internal reference to controller.
     *
     * @param SystemController $oController
     * @return void
     */

    public function setController($oController) {
        $this->oController = $oController;
    }

    public function myMethodAction() {
        return $this->oController->oDocument->getProperty(PageTable::TITLE);
    }
}


W tym przypadku metoda getController zwraca PublicPageController co oznacza, że dostęp do metod w tej klasie uzależniony jest od tego czy uda się załadować stronę o podanym id. Id strony podaje się przez dodanie do URL  standardowego parametru __page_id. Oczywiście strona musi byc opublikowana, aby była widoczna i metoda myMethodAction została wykonana. Jeżeli nie podamy __page_id w URL to zostanie załadowana strona główna projektu.

Prosze zwrócić uwagę że właściwość oController ma podpięty dokument (stronę) do której udało się dostać - oDocument. Dlatego możemy pobrać tytuł tej strony.

Dostęp do innych stron można sprawdzić wpisująć w oknie przeglądarki kolejne adresy z __page_id:

  • http://moja_domena.com/cms/?__cmd=MyExampleActions.myMethod&__page_id=1
  • http://moja_domena.com/cms/?__cmd=MyExampleActions.myMethod&__page_id=2
  • http://moja_domena.com/cms/?__cmd=MyExampleActions.myMethod&__page_id=x
Zobacz więcej...

Metryka dokumentu

Tytuł: Data not available! Please fill metadata!
Opis: Data not available! Please fill metadata!
Źródło: Data not available! Please fill metadata!
Prawa autorskie: Data not available! Please fill metadata!
Autor: root Zmodyfikowany przez: root
Data utworzenia: 2010-02-12 16:59:39 Data modyfikacji: 2010-02-12 17:02:17
Data publikacji: 2010-02-12 17:02:17
(c) +CMS Content Management Platform