niedziela, 7 września 2008

Symfony krok 3

Uruchomienie kodu symfony z lini poleceń:



define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/..'));
define('SF_APP', 'myapp');
define('SF_ENVIRONMENT', 'prod');
define('SF_DEBUG', false);

require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');

// add code here


Front controller to coś co przyjmuje zapytania i interpretuje je. Można dodać nowy kontroler, ale mnie interesują tylko dwa kontrolery, które już są zdefiniowane. Mianowicie:


http://localhost/index.php/mymodule/index
http://localhost/mymodule/index

i

http://localhost/myapp_dev.php/mymodule/index


Nazewnictwo klas akcji

Nazwa klasy musi zaczynać się od nazwy modułu z małej litery i kończyć się na Actions. Klasa musi być umieszczona w katalogu pps/myapp/modules/mymodule/actions/ a plik musi nazywać się actions.class.php

Każda metoda przynosząca nowe akcje musi zaczynać się od execute, a cała klasa musi dziedziczyć po sfActions.


class mymoduleActions extends sfActions
{
public function executeIndex()
{

}
}


Nazwa wywołania url jest wzięta z nazwy funkcji w ten sposób że jeśli utworzymy funkcję executeList poprawnym url dla tej akcji jest

http://localhost/myapp_dev.php/mymodule/list
lub
http://localhost/mymodule/list

Możemy również tworzyć całe klasy dla poszczególnych akcji. Wtedy musimy dziedziczyć z klasy sfAction i tworzyć klasy o nazwie NazwaAkcjiAction.

np.
myapp/modules/mymodule/actions/indexAction.class.php


class indexAction extends sfAction
{
public function execute()
{
...
}
}


myapp/modules/mymodule/actions/listAction.class.php


class listAction extends sfAction
{
public function execute()
{
...
}
}


Pobieranie informacji o wywołaniu:


class mymoduleActions extends sfActions
{
public function executeIndex()
{
// Retrieving request parameters
$password = $this->getRequestParameter('password');

// Retrieving controller information
$moduleName = $this->getModuleName();
$actionName = $this->getActionName();

// Retrieving framework core objects
$request = $this->getRequest();
$userSession = $this->getUser();
$response = $this->getResponse();
$controller = $this->getController();
$context = $this->getContext();

// Setting action variables to pass information to the template
$this->setVar('foo', 'bar');
$this->foo = 'bar'; // Shorter version

}
}


Templates

Jeśli akcję zakończymy return sfView::SUCCESS;, lub jeśli nie podamy return do wywołania zostanie dołączony szablon actionNameSuccess.php. Możemy także zwrócić sfView::ERROR wtedy zostanie dołączony szablon actionNameError.php, ogólnie symfony szuka w szablonach pliku zwróconego prze return 'MyResult' + prefix nazwa akcji.

Można też:


return sfView::NONE;


i


$this->getResponse()->setContent("Hello, World!");

return sfView::NONE;


lub


return $this->renderText("Hello, World!");

Brak komentarzy: