![]()
|
|
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.
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:
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 | ||