Gyakran használt Yii változók és függvények
A Yii-ben rengeteg globális változót el lehet érni függvényeken keresztül. Nagyrészük használat során egyértelművé válik, de a CHttpRequest metódusokból olyan sok van, hogy feleseges megjegyezni, mikor melyiket kel használni, ezért inkább összegyűjtöttem őket.
Sokkal jobb így elérni egy globális változót, mintha közvetlenül kérnénk le mondjuk a $_SERVER['REQUEST_URI'] változó értékét, mert a framework fejlesztői tettek bele ellenőrzéseket is. Például ha nem létezik a $_POST['vezeteknev'] változó, akkor nem kapunk php hibát, hanem visszaad egy null-t. Így megspórolhatjuk az if - isset() - else haszálatát.
A lista nem teljes, amiről úgy gondoltam, hogy nem fogom használni, vagy a használata, eredménye számomra egyértelmű, azt nem tettem bele.
Yii::app() változók
$app = Yii::app(); $app->getBaseUrl(true); // "http://www.borsosalbert.hu" (nincs a végén / jel) $app->charset; // "UTF-8" $app->homeUrl; // "/" $app->language; // "hu", setLanguage()-el módosítható nyelvváltásnál $app->name; // Alkalmazás neve $app->timeZone; // "Europe/Budapest" - időzóna<br>
CHttpRequest metódusai
$request = Yii::app()->request; $request->getBaseUrl(); // üres string $request->getBaseUrl(true); // "http://www.borsosalbert.hu" (nincs a végén / jel) $request->getHostInfo(); // "http://www.borsosalbert.hu" (nincs a végén / jel), ha van portszám, azt is visszaadja $request->getParam('name', null) // $_GET['name'] értékét adja vissza, ha nem létezik, akkor $_POST['name'] értékét, ha az sem, akkor a 2. paramétert adja vissza $request->getPort(); // 80 (int) $request->getPost('name', null); // $_POST['name'] értékét adja vissza, ha nem létezik akkor null-t $request->getQuery('name', null); // $_GET['name'] értékét adja vissza, ha nem létezik akkor null-t $request->getQueryString(); // "param1=value1¶m2=value2" $request->getRequestType(); // "GET", "POST" (string) = $_SERVER['REQUEST_METHOD'] $request->getPathInfo(); // "controller/action" (string) - hostInfo utáni rész queryString nélkül, kezdő és záró / nélkül $request->getRequestUri(); // "/controller/action" (string) - hostInfo utáni rész /-el együtt és tartalmazza a queryString-et is $request->getServerName(); // "borsosalbert.hu" = $_SERVER['SERVER_NAME'] $request->getUrl(); // = getRequestUri() $request->getUrlReferer(); // előző oldal url-je, úgy mint a getUrl() = $_SERVER['HTTP_REFERER'] $request->getUserAgent(); // useragent string, ha nincs akkor null $request->getUserHost(); // látogató szolgáltatójának szervere, ha nincs akkor null = $_SERVER['REMOTE_HOST'] $request->getUserHostAddress(); // látogató IP címe, ha nincs akkor "127.0.0.1" = $_SERVER['REMOTE_ADDR'] $request->redirect($url, true, $statusCode); // header("Location: ") wrapper
Persze ez sem tökéletes minden helyzetben. Például ha egy tömböt küldünk el űrlapon, akkor nem tudjuk elérni függvényen keresztül.
$_POST['Customer'] = array( 'nameFirst' => 'Albert', 'nameLast' => 'Borsos', ); Yii::app()->request->getPost('Customer', null); // ez visszaadja a tömböt Yii::app()->request->getPost('Customer[nameFirst]', null); // ez nem működik Yii::app()->request->getPost('Customer')['nameFirst']; // ez működik, ha létezik "nameFirst"... Yii::app()->request->getPost('Customer', array('nameFirst' => 'null', 'nameLast' => 'null'))['nameFirst']; // ez biztosan működik, de elég körülményes egy nagyobb tömbnél