Action+View több kontrollerből

Van egy viszonylag bonyolultabb action-öm, ami több (AR) modult használ fel. Azt szeretném kérdezni, hogy ti ezt hogy oldjátok meg.

Azt szeretném, hogy az action több kontrollerből is használható legyen, de ne kelljen újraírnom, mert később, akkor nehezen lenne karbantartható a kód.

Az action-hoz tartozó nézet is majdnem megegyezik, annyi kiegészítéssel, hogy egy render partial-t kell meghívnom, ha nem a fő kontroller hívja meg a nézetet.

Például:

/controller/

----main.php

----registration.php

/views/

—main/index.php

—registration/index.php

Ha a registration controller index action-ja fut le, akkor main index action-ban szereplő minden üzleti logika lefut, majd a registration kontroller index action-jában lévő egyéb üzleti logikai lefut. Végül a main kontrollerhez tartozo index.php renderpartial-al meghívja a registration kontrollerhez tartozó index.php nézetet.

Köszi, a válaszokat!

Szerintem valami hasonló megoldás kell neked:

http://www.yiiframework.com/wiki/170/actions-code-reuse-with-caction

Azaz külön Action file-t kell írnod, amit vagy az extensions vagy a components mappában tárolsz, és a fenti példában említett módon alkalmazol az összes conrollerben, ahol csak használni szeretnéd.

Igen, köszi jónak tűnik.

Kissé átszerveztem a problémát. A fő kontroller lényegi blokkjait kiszerveztem privát metódusokba.

Illetve a kontrolleren belül hagytam a logikát. Action átjárással sikerült megoldani a feladatot.

A fő kontroller fő action-ja által meghívott nézetébe egy egyszerű logikát építettem be, ami partiálisan betölti a többlet üzleti logikához tartozó nézetet, ha szükséges.

A kiegészítő kontrollerek a privát metódusokon keresztül ugyanazon üzleti logikát töltik be, ami a fő action-höz tartozik, majd kiegészíti a saját logikájával, azonban nem képződik forráskód redundancia ezzel a megoldással.

Talán kicsit tömör a leírásom, de a logika nagyon jól működik és jól is alkalmazható Yii extension-ök felhasználása nélkül.