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:
Prześlij komentarz