ugrás a tartalomhoz

Symfony kiskérdések

TIV · 2010. Már. 18. (Cs), 18.54
Sziasztok!

Elég régóta PHPzek, de most vettem rá magam, hogy keretrendszert is használjak. Bele a mélyvízbe: Symfony! :) Elég akadozva haladok a tanulásával, sok kis kérdésem lenne, aminek kiguglizása sok idő, van amire nem is találok választ fél óra böngészés után sem. Ha van valaki, aki régebb óta foglalkozik sf-el és van pár perce rám msnben/gtalkon (mindkettőhöz: sakramenta[KUKAC]gmail.com), azt nagyon megköszönném, illetve meghálálnám! Előre is köszönöm, ha az alábbi kiskérdések bármelyikére tud vki válaszolni!

1. csrf_token elrejtése az űrlapban
Két oszlopban szeretném megjeleníteni a formok inputjait. Ehhez azt csináltam, hogy a _form.php partialban a formot így iratom ki:
			foreach ($form as $widget) {
				// pl.. echo $widget->renderRow();
			}
Ezzel a módszerrel soronként/inputonként ki tudom írni a dolgokat, táblázatba tudom őket rakni, minden jó. DE! Sajnálatos módon a _csrf_token rejtett mező labelje is kiíródik és képtelen vagyok eltüntetni. Tudja valaki, hogy kell? A $this->widgetSchema->setLabels nem segített... az unset()-el se tudom törölni a listából...

2. Select lista elemeinek sorrendje az űrlapoknál
Vannak formjaim select listákkal (relációk), ám sehogysem tudok rájönni, hogy lehet az alapértelmezett (id szerinti) sorrendezést megváltoztatni alfabetikusra. Ötlete vkinek?

3. onDelete: CASCADE
Az említett kapcsolattal hoztam létre két táblát...
rmPartner:
  ...
  relations:
    rmUser: { onDelete: CASCADE, local: contact, foreign: id }

Ennek eredményeképpen ha töröltem egy User-t, törlődött/törlődtek a hozzá kapcsolat Partnerek is. Én viszont azt szeretném, hogy nyugodtan lehessen törölni Usert vagy Partnert, de a hozzá kapcsolt táblából NE törölje a sorokat, csak nullázza ki a foreign key-t. Ezért: Kitöröltem az onDelete: CASCADE részt a schema.yml-ből, majd kiadtam a doctrine:build -all parancsot. Most User törléskor a következő hibaüzenetet kapom:
500 | Internal Server Error | Doctrine_Connection_Mysql_Exception
SQLSTATE[HY000]: General error: 1451 Cannot delete or update a parent
row: a foreign key constraint fails (`rm`.`rm_partner`, CONSTRAINT
`rm_partner_contact_rm_user_id` FOREIGN KEY (`contact`) REFERENCES
`rm_user` (`id`))

Próbáltam onDelete: SET NULL paraméterrel is, de azzal már a build se tudott lefutni... Csinált már valaki ilyen kapcsolatot? Mi lehet a gond?

4. Kis elmélet
El tudná valaki mesélni mi a lib/model/doctrine *.class.php és *Table.class.php fájlok közötti különbség? Mi kell az egyikbe, mi a másikba?

Köszönöm előre is!
 
1

csrf token

Sulik Szabolcs · 2010. Már. 19. (P), 10.16
Egyesevel valaszolok, talan atlathatobb lesz :)

szal csrf token. eloszor ott hibazol, hogy a view-ban a form-on vegigiteralva nem widget, hanem field (sfFormField) peldanyaid vannak. es bizony a csrf token is resze az urlapnak, egy hidden input formajaban. ezt viszont lehet vizsgalni.

foreach ($form as $field) {  
  if (!$field->isHidden()) {
    // pl.. echo $widget->renderRow();  
  }
} 
a rejtett mezoket pedig egyetlen hivassal el tudod intezni a <form> tag utan:
$form->renderHiddenFields()
mindettol fuggetlenul nem javaslom, hogy igy jelenitsd meg az urlapot. nem nagy munka minden egyes mezot kulon-kulon szepen megjeleniteni, viszont kesobb szazszorosan megterul ez a kis plusz raforditott ido :) (meg a site builder sem fog anyazni)
5

Szuper!

TIV · 2010. Már. 19. (P), 11.51
Sikerült! Köszönöm! :)

Te hogyan csinálnád meg akkor a két oszlopos űrlap megvalósítást? Mit értesz azalatt, hogy egyessével? A view-n belül hoznád létre az inputokat kézzel? Nem dinamikusan? Miért jobb az?
10

arra gondoltam

Sulik Szabolcs · 2010. Már. 19. (P), 12.54
hogy ne iteralj vegig a formon, ne hasznalj echo $form dolgokat.

<div class="row">
  <?php echo $form['foo']->renderLabel(); ?>
  
  <?php echo $form['foo']; ?>

  <?php if ($form['foo']->hasError()) : ?>
  <div class="errors">
    <?php echo $form['foo']->getError(); ?>
  </div>
  <?php endif; ?>
</div>
<div class="row">
  <?php echo $form['bar']->renderLabel(); ?>
  
  <?php echo $form['bar']; ?>

  <?php if ($form['bar']->hasError()) : ?>
  <div class="errors">
    <?php echo $form['bar']->getError(); ?>
  </div>
  <?php endif; ?>
</div>
<!-- .... -->
valami ilyesmi. igy szvsz atlathatobb, hogy mi is akar ez lenni.
11

értem, csak...

TIV · 2010. Már. 19. (P), 13.01
30 mezőm van körülbelül egy formon, így elég sokáig tart...:)
2

Select lista elemeinek sorrendje az űrlapoknál

Sulik Szabolcs · 2010. Már. 19. (P), 10.23
tobb modszer van ra. az egyik olyan egyszeru, hogy el sem hinned :)

egy relacio, mondjuk a Foo modelre, egy foo_list widget-et (sfWidgetFormDoctrineChoice) hoz letre a formban. ez alapveto pk szerint rendezett. de vannak neki opcioi is. pl az 'order_by': erteke egy 2 elemu tomb [mezo neve, rendezes] par.

hasznalata:

class BarForm extends BaseBarForm
{
  function configure()
  {
    $this->widgetSchema['foo_list']->setOption('order_by', array('name', 'desc'));
  }
}
emellett advanced felhasznalasra atadhatsz neki akar sajat Doctrine_Query peldanyt is a 'query' opcion keresztul
6

Szuper!

TIV · 2010. Már. 19. (P), 11.51
Sikerült, köszönöm! :) Nem értem, hogy ezt, hogy nem találtam meg...
7

Szuper!

TIV · 2010. Már. 19. (P), 11.55
Sikerült, az volt a gond, hogy az egyik foreign key mező NULL tulajdonsága FALSE volt, bár én nem mondtam ezt neki... mind1: notnull: false megoldotta + az onDelete: SET NULL, ahogy sejtettem.:) Köszönöm ezt is és a 4. hozzászólást is! :)
4

Kis elmélet

Sulik Szabolcs · 2010. Már. 19. (P), 10.30
a *Table osztalyok magat a tablat reprezentaljak (Doctrine_Table leszarmazottak). a "sima" osztalyok pedig egy rekordot (Doctrine_Record leszarmazottak). szvsz olvasd el a doctrine ide vonatkozo dokumentaciojat, meg egyaltalan azokat a reszeket amelyek erdekelnek.
8

Új kérdés

TIV · 2010. Már. 19. (P), 12.17
Szia!

Lenne még egy kérdésem. Hogyan lehetne az űrlap hibaüzeneteit magyarra fordítani? Eddig így csináltam, de ezt gányolásnak érzem. Ráadásul ismerni kellene minden mező, minden lehetséges hibafajtáját és másolgatni kellene őket...
$this->validatorSchema['email']->setMessage('invalid', 'Hibás email cím!');
$this->validatorSchema['email']->setMessage('required', 'Kötelező megadni!');
$this->validatorSchema['name']->setMessage('required', 'Kötelező megadni!');
Köszönöm, ha van ennél jobb megoldás! Biztos van.:)
9

setDefaultMessage()

Sulik Szabolcs · 2010. Már. 19. (P), 12.50
az sfValidatorBase-nek van egy statikus metodusa, ezzel lehet beallitani default, minden validatorra ervenyes hibauzeneteket egyes hibatipusokhoz. jelenleg ez kimerul a 'required' es az 'invalid' tipusoknal.

sfValidatorBase::setDefaultMessage('required', 'Kotelezo megadni.');
sfValidatorBase::setDefaultMessage('invalid', 'Hibas adat.');

abstract class BaseFormDoctrine extends sfFormDoctrine
//...
a pelda kicsit furcsa lehet, de megvan az oka :) oda erdemes rakni, mert:
1. minden form ebbol szarmazik
2. a trukkos resze a dolognak, hogy ezt akkor allitja be, amikor a validator letrejon. namost ha te a setup()-ban hagyod hogy letrejojjon (BaseFooForm), es utana akarod a configure()-ban beallitani (FooForm), akkor az bukta, ott mar letrejott a validator. ezert raktam a lib/form/BaseFormDoctrine.class.php legelejere
12

elég nyakatekert...

TIV · 2010. Már. 19. (P), 18.05
Én azt hittem, hogy nem ennyire macerás ez a symfony. Nem készültek fel a többnyelvűségre? Ha például van egy unique mezőm, akkor An object with the same "email" already exist. hibaüzenetet kapok. Ez a hibaüzenet az sfValidatorDoctrineUnique osztályban van beállítva, azaz felülírja a mi "Hibás adat." szövegünket ha jól gondolom. Hogy tudok erre a hibára is külön szöveget beállítani? Írjam át a fájlban?

Más: Egy komolyabb projectnek ugrottam neki symfonyban, kezdő szimfonizósként. Lehet hiba volt, lehet nem, sokat kell még tanulnom, de tetszik. Sok buktató van, sok mindent nem tudok, ami lassítja a munkámat, márpedig jó lenne haladni... jogosultságok, felhasználók, csoportok... sfDoctrineGuardPlugin -hoz mennyire értesz? Elég sok kérdésem van és szükségem lenne egy kis segítségre. Lehet nem a legjobb megoldás, ha minden kérdésemet itt írom meg a fórumban. Esetleg szabadidődben tudnál rám több időt szentelni? Kis chates konzultáció? Természetesen nem ingyen kérem, biztos meg tudunk egyezni. Szóval vállalsz Symfony korrepetálást?:)
13

akkor egyszerusitsunk

Sulik Szabolcs · 2010. Már. 20. (Szo), 00.21
szoval ugy nez ki ez a validator hibauzenet beallitas, hogy:

//...
  $this->validatorSchema['foo'] = new sfValidatorNumber(
    array('required' => true),
    array(
      'required' => 'Kotelezo szam.',
      'invalid'  => 'Hibas adat. Ez bizony szam.'
    ),
  );
//...
itt ugy mukodik a dolog, hogy az sfValidatorBase-ben ezek (required, invalid) szepen be vannak allitva, mint globalis default ertekek. ezt tudod megvaltoztatni a fenti setDefaultMessage() metodussal. uj validator peldanyositasakor ezeket a globalis default-okat mergeli ossze azzal, amit adtal neki.

amugy a symfony minden hibauzenetet megjelenites elott atengedi az i18n fordito fuggvenyen, szoval azok konnyen nyelvesithetok, minden kuzkodes nelkul.

mas: idom az nincs, irj privatban es majd meglatom...
14

hmm

TIV · 2010. Már. 21. (V), 18.23
Köszönöm, akkor valószínűleg ezzel az i18n fordító függvénnyel fogom megoldani.

Más: A következő dologra lenne szükségem. A rendszeremen belül lennének felhasználók, csoportok, jogosultságok, super adminok.:) Minden csoportra/felhasználóra meg lehetne adni, hogy melyik modult, esetleg mely actionjét használhatja... A felhasználókat kézzel tudná felvinni a super admin. Elég nekem ehhez az sf jogosultság kezelése, vagy kell nekem a sfDoctrineGuardPlugin? Nem igazán tudom mivel tud többet a plugin, ennek ellenére feltelepítettem. Kiderült, hogy az eddig users táblában tárolt emberkéim adatainak egy részét most már a plugin sfguardusers táblájában kell tárolni, hogy be tudjanak jelentkezni a felhasználók. Rögtön jött is egy probléma: A gond az, hogy a felhasználók email címe a plugin táblájában is szerepel és az én saját users táblámban is. Egy helyen kellene őket tárolni, nyilván a plugin táblájában. Hogy lehet ennek ellenére az én users táblámhoz generált formban megjeleníteni? és mentéskor a plugin táblájába menteni az email címet? Nagyon nem látom át ezt az egészet.

Nem teljesen világos az sem, hogy mi az a backend, de úgy gondolom, hogy ez lenne az adminok oldala, ahol pl. a felhasználókat, csoportokat tudnák állítgatni. Az én oldalamnak viszont nem terveztem backend részt. Hülyeség amit beszélek? Én egy zárt rendszer csinálok. Minden felhasználó kézzel lesz hozzáadva a rendszerhez. Mindenkinek be lesz állítva mihez fér hozzá és azt szeretném, hogy a super adminok a felhasználók kezelésére is képesek legyenek. Mi az ehhez vezető legrövidebb út? Hogy lehetne elkerülni, hogy a felhasználók adatai egy helyen legyenek és onnan történjen a bejelentkezés? Ne kelljen formokat merge-elni?

KÖSZÖNÖM!
15

Szia, mindenképpen érdemes

virág · 2010. Már. 22. (H), 09.18
Szia,
mindenképpen érdemes felrakni az sfDoctrineGuardPlugin-t, a leírásod alapján ami neked kelleni fog az benne van, ennek a "backendje" az egy olyan felület, ahol a csoportkezelést és a felhasználó kezelést meg tudod valósítani, emellett új jogosultságokat is tudsz definálni és ki is tudod terjeszteni, semmiképpen nem érdemes feltalálnod a spanyol viaszt :)
A Symfony beépített felhasználó kezelése teljesen más, az csak lehetőséget biztosít arra, hogy a legelemeibb dolgokat egy közös osztályon keresztül lehessen elérni (többek közt a munkamenet kezelés is ide tartozik, ami nagyon jó dolog), erre épülhetnek rá a saját megoldások (pl. az sfGuard, sfDoctrineGuardPlugin is).
Az sfDoctrineGuardPlugin jól meg van csinálva, és kiforrtnak nevezhető, mert a Symfony készítői csinálták és tartják karban + sokan használják.

"Hogy lehetne elkerülni, hogy a felhasználók adatai egy helyen legyenek és onnan történjen a bejelentkezés?"
Ezek egy helyen lesznek...egy adatbázisban, egy jól átgondolt és megtervezett adatbázisban.


"Ne kelljen formokat merge-elni?"
Ezt nem értem...miért kellene formokat összevonni? Ez hogy jön ide?

:)
16

érdekes

TIV · 2010. Már. 22. (H), 13.15
Ezek egy helyen lesznek...egy adatbázisban, egy jól átgondolt és megtervezett adatbázisban.
Én úgy tudom, hogy a plugin adatbázisában csak a bejelentkezéshez szükséges információk lesznek a userről, nekem viszont több információt kellene tárolnom, címét, elérhetőségeit, stb... Itt, ezt olvastam:
By default the sfGuardUser schema only includes the information required for the authentication process, nothing more and nothing less.
Ezt értsem úgy, hogy az én users táblámat a felhasználó minden adatával költöztessem át a plugin users táblájába? Bővítsem azt ki?

Mi a különbség a frontend és backend között? Ha mondjuk átköltöztetem az adatokat a plugin táblájába, be tudom állítani, hogy bizonyos csoportok, felhasználók mely mezőket láthassák, állíthassák? Annyira jó lenne ezt telefonon/chaten, esetleg személyesen megbeszélni valakivel. Te kapható vagy ilyesmire? Megfizetném. Köszi!

***********

Miért van az szerintetek, hogy unique: true -ra váltottam egy mezőt, újrahúztam build --all --and-load-al, de SZERKESZTÉSkor,

* An object with the same "email" already exist.

hibaüzenetet kapok. Mintha ÚJ sorként értelmezni, pedig én szerkeszteni akarom... Meghülyülök lassan.... :( Köszi!
19

Ezt értsem úgy, hogy az én

Sulik Szabolcs · 2010. Már. 22. (H), 22.57
Ezt értsem úgy, hogy az én users táblámat a felhasználó minden adatával költöztessem át a plugin users táblájába? Bővítsem azt ki?

Az sf_guard_user.id alapján ki tudsz alakítani egy one-one kapcsolatot mondjuk egy profile táblával. Oda pedig azt veszel fel, amit akarsz.
An object with the same "email" already exist.

Nem új rekordként. Egyszerűen csak már létezi olyan email cím (nyilván unique a mező).
17

könyvek?

TIV · 2010. Már. 22. (H), 17.43
Ti honnan tanultátok meg ennyire a symfonyt? Hol vannak jó példák? Van ajánlott könyv esetleg? Én csak a practical symfony, meg reference guide-okat nézegettem, de ott általában 1 oldalban kimerül az sfGuard, a telepítéséig....
18

könyvek

Sulik Szabolcs · 2010. Már. 22. (H), 22.46
Sajnos ebben nem nagyon tudok neked segíteni. Amikor én kezdtem akkor 1.0 volt, ahhoz definitive guide. Ma már sajna ezt levették, de én csak ajánlani tudom. Közelebb kerülhetsz az alapkoncepciókhoz, habár elavultak én vetnék rá egy pillantást (mondjuk 1-9, 12-13, 15- fejezetek).

UI: egyébként benne vagyunk a tévében :) (They talked about us rész)
20

Váháj! Híresek vagyunk...

TIV · 2010. Már. 25. (Cs), 17.35
Köszi, amint lesz egy kis szabadidőm (2023 körül :D) át fogom nézni! Addig is lenne egy kérdésem (nahát!). Nekem elég nagy szívügyem lett az utóbbi időben a tömörség, nem szeretem ha egy kódrészletből kettő van két külön helyen és nagyon hasonlítanak egymásra, mert gányolásnak tartom, biztos van jobb megoldás! Ezzel kapcsolatos a kérdésem...

Action öröklődés?
Van pár modulom és pár olyan action-öm, amely az összes modulban benne kell, hogy legyen. Hogyan lehetne megoldani, hogy ezeket egy helyen írjam meg és minden Action osztályban benne legyen? Jól gondolom, hogy az sfActions.class.php -ba írással tudom ezt csak megoldani? Az a baj, hogy ez az osztály a lib mappában van, amire néha rányomok egy svn update-et. Tud valaki erre megoldást? Nem akarom 6 helyen ugyanazt látni... Gondolkodtam rajta, hogy csináljak egy default modult és rakjam bele a közös elemeket, minden modulban pedig redirectezzek rá és adjak át minden szükséges adatot? Nade ettől még urlben nem tudok meghívni egy /user/vmiaction -t ha az nem létezik. Ötlet?

Nagyon köszönöm!!!

ui: Most már mi is csinálhatnánk egy They talked about us oldalt és kitehetnénk őket... infinite loop ^^
21

Jobeet

vikos · 2010. Már. 28. (V), 19.02
Szia

A Defeinitve guide-ot mindenképpen fusd át...
Sajnos a symfony-hoz nincs szépen lexikálisan rendezett dokumentáció. A készítő egy példa site elkészítésén keresztül mutatja be a rendszer működését. És ami a legrosszabb benne, hogy nem elég átfutni mert a lényeg mindig az "apró betűs" részben van. Én 4x olvastam el... utolsó alkalommal is találtam benne újdonságot.

Sajna csak a jobeet, az Referenc Book, és az API - generált - dokumentációja van...

Egyébként 10-ből 9x a kód böngészése segít.

/===================================/

Ha csak az egyik application-höz kell akkor csinálj az app. lib könyvtárába egy osztályt, ami öröklődik az sfAction class -ból. Belerakod a plusz fv-eket. Majd abból örökölteted a kontrollert ahol szükség van a plusz action-re.
22

Köszi + Many-many kapcsolat

TIV · 2010. Már. 31. (Sze), 16.52
Köszi, sikerült az általad leírt módszerrel! :)

Egy új gondom van, many-many kapcsolatot szeretnék két tábla közé, így definiáltam a schema.yml-ben a kapcsoló táblát...
LinkPartnerUser:
  columns:
    partner_id:
      type: integer
      primary: true
    user_id:
      type: integer
      primary: true

A két érintett táblához pedig ezeket a sorokat raktam be relations alá:
#ezt a partner táblám relationjébe:
LinkPartnerUser: { local: id, foreign: partner_id, refClass: LinkPartnerUser }

#ezt a user táblám relationjébe:
LinkPartnerUser: { local: id, foreign: user_id, refClass: LinkPartnerUser }

Ezután ha partner vagy user modulom edit actionjét indítom a következő hibaüzenetet kapom:

500 | Internal Server Error | Doctrine_Query_Exception
Unknown column id

Mitől lehet ez? Mit rontottam el? Nagyon köszönöm!

********************* SZERK *********************

Sikerült megoldani!

# a user relation részébe:
partners: { class: Partner, refClass: LinkPartnerUser, local: user_id, foreign: partner_id }

# a partner relation részébe:
contacts: { class: User, refClass: LinkPartnerUser, local: partner_id, foreign: user_id }

# és a harmadik tábla, amiben a kapcsolások vannak
LinkPartnerUser:
  columns:
    partner_id:
      type: integer
      primary: true
    user_id:
      type: integer
      primary: true
23

Egyetlen mező mentése

TIV · 2010. Ápr. 1. (Cs), 14.54
Sziasztok!

Sehogysem találom a megoldást. Van egy modulom, hozzá űrlap. Csináltam még egy űrlapot, most ugyanabból a baseform-ból származnak. Van egy mezőm a táblában és szeretném ha az egyik formon nem látszana, a másikon pedig CSAK AZ A MEZŐ látszana. Hol unset, hol useField()-el oldottam meg. A gond az, hogy amit unset-elek, az ki fog nullázódni mentésnél.

1. Hogy lehetne beállítani, hogy csak az adott widget-el mentse és a többet érintetlenül hagyja?

2. Van ugye új formom (1 mezővel), új action-öm (edit-hez hasonló, csak az új formot hívja), új view (az új actionhöz, de hasonló az editSuccess-hez...). Ezt az új űrlapot én az /update actionre szeretném ráküldeni, viszont az nem menti le, ugyanis gondja van: CSRF attack detected. Miért? Azért mert az /update-et nem az /update vagy /edit actionről küldöm rá ? Amúgy minden megegyezik, nem értem...

Nagyon köszönöm a segítséget!

********************* SZERK *********************

Sikerült megoldani! Az volt a gond, hogy az update action mindig a régi formot használta, így a ProcessForm megállt. Kellett bele egy if...
24

nekem van egy program, mint

donaldjeo · 2010. Ápr. 6. (K), 08.55
nekem van egy program, mint ez én beteg elküldjük az e-mail címét ... de szeretem az adatait ... Ön által megadott információk nem csak érdekes, de az átlagos teljes mértékben értem és más népek, akik látogat-a telek. De sajnos nem írt többé miatt én tanulmány mcse, mert szeretnék frissíteni engem IT területen, és hogy nekem jobb és jobb. Nem kiad minden alkalommal a dolgozószobámba, még időt a zene, a sport és az internetböngészés a tudhat meg többet, és több nagy teljes és legfrissebb információkat. De nekem tetszik, hogy csatlakozzanak hozzád csoport és boldog, hogy én egy részét a csoport segítségével, hogy egy számla-ra-a telek és választ a post. Have a nice day!
25

kapcsolótábla okosan

TIV · 2010. Ápr. 13. (K), 16.46
Sziasztok!

Lenne egy kérdésem.:) Adott két tábla, egyik a "partner" (cég), másik a "user". Many-many kapcsolat van közöttük, egy user több partnernél lehet, egy partnernek, több usere lehet. Ez működött is eddig, a user formjába be tudtam tenni egy sfWidgetFormSelectDoubleList dolgot, amivel szépen hozzá lehet több partnert rendelni egy userhez. Következő igény merült fel, az adott partnerre vonatkozóan a userhez szerepköröket kell rendelni. A szerepkörök egy másik táblában (modulban) fel vannak sorolva.

Kérdés:
Hogy csináljam? Kell ehhez még egy kapcsolótábla? Vagy 1-el is meg lehet oldani a user-partner-szerepkör kapcsolatot? Egy usernek több szerepköre is lehet egy partnernél és az adott szerepkör(ök) más usereknél is lehet(nek) az adott cégen belül és kívül is. (más partnernél)


még valami: Azt a formot, ami összekapcsolja a partnereket a userrel és meg lehet adni a szerepköröket, nem a user és nem a partner alapértelmezett formjában szeretném megvalósítani, hanem egy teljesen új formban / modulban. Így hogy tudom rávenni pl. a sfWidgetFormSelectDoubleList elemet, hogy megjelenjen? Nem jelenik meg, hiszen nem tudja melyik user-ről vagy partner-ről van szó, legalábbis így gondolom.

Előre is köszönöm a segítséget!
26

Beágyazott űrlap mentése

TIV · 2010. Ápr. 14. (Sze), 17.44
Sziasztok!

Következőt szerettem volna: Több fájlfeltöltés egy űrlappal. Csináltam egy modult, hozzá egy formot. A formra rágeneráltam 10 fájlfeltöltő inputot:
for($i=1; $i<=10; $i++) {
  $this->widgetSchema['upload'.$i] = new sfWidgetFormInputFile(array());
  $this->validatorSchema['upload'.$i] = new sfValidatorFile(array());
}
Beágyaztam egy másik modul, másik formjába:
$form = new UploadForm();
//ezek nem kellenek a formra, mert automatikusan fognak létrejönni -> ITT A BAJ!
unset($form['created_at'], $form['updated_at'], $form['module'], $form['entityid'], $form['filename']);
$this->embedForm("upload_fields", $form);
Beágyazza, el is menti az eredeti formot, illetve a beágyazottat is, csakhogy egy üres sor lesz a táblában, hiszen a mezők (amik az utólsó kódrészletben látszanak: module, entityid, filename) nem szerepelnek a formon, azok a feltöltött képek fájlnevéből, illetve a feltöltő modul nevéből (urlből) származnak.

Kérdés: Hogy és hol lehetne átírni a mentési folyamatot, hogy én adhassam meg, mi hova kerüljön az adatbázisban, melyik mezőbe mit szúrjunk?

Köszönöm előre is!