Felhasználó által is elérhető action

Aki már többet használt a cake funkciói közül, mint az egyszerű bake-kel előállí­tható scaffold oldalak, az valószí­nüleg készí­tett már saját metódust a controllerben. Sokszor ezek csak egy rész feladatot látnak el (egy másik metódus használja), és nem szeretnénk, ha a felhasználók elérheténk kí­vülről. Ezért alkalmazzuk az (oly szerencsétlen) _metódusNév() és __metódusNév() jelölést.

Személy szerint én csak az első változatot: a cake csak azt figyeli, hogy _ vagy __ prefixe legyen a függvénynek (php4 miatt nincs más jelentősége ennek a jelölésnek).

Ezért mindenki nagyon figyel, hogy a nem action-nek szánt metódusokat prefixelje. A kérdésem csak az, hogy valóban mindenhol figyelünk erre? Ugyanis nem csak az adott controller, hanem az AppController-ben “ott felejtett”, prefix nélküli metódusok is meghí­vhatók.

Lássunk egy példát (app_controller.php):

function index() {
   $model = Inflector::camelize(
      Inflector::singularize($this->params['controller'])
   );
   $this->set(
      strtolower($this->params['controller']), $this->$model->findAll()
   );
   $this->render('index');
}

Ha végiggondolojuk, akkor ez bármely controller alatt (ha nincs felülí­rva), akkor egyfajta scaffold szerepét is betöltheti. Sőt, ha tovább megyünk, akkor elkészí­thetük az 5 alapfunkció egy (akár kezdetleges) vázát is ebben a formában. Bár ekkor a model-t még mindig létre kell hozni kézzel, valamint a view kezelésre is ki kell találni valamit, viszont a működés a Railsben létvőt fogja utánozni (ott a scaffold megvan folyamatosan, csak a felülí­rt action viselkedése változik meg).

UI.: kutakodásom alatt egy érdekességre lettem figyelmes: a controller setAction() metódusa a leí­rásokban egy paraméterrel (a másik action neve) szerepel. Azonban ha további paramétereket adunk meg neki, akkor azokkal fogja hí­vni a kiválasztott actiont. Utánanézve valóban emlí­ti egy mondat az api dokumentációban, viszont a paraméterlistában nincs jelölve.

Kategória: cakephp, php
Címke:
Közvetlen link a könyvjelzőhöz.

Egy hozzászólás a(z) 0ejegyzéshez

  1. Visszajelzés: blerou szerszámosládája - cakephp, symfony, javascript web2(beta) » Tetszőleges action futtatásának tiltása

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s