Symfony2

Hátha valaki a nagyérdeműből használ Symfony-t.

Indulásként lenne is egy kérdésem :)

FOS UserBundle: Hogyan cseréljem ki a "/login" route-ot simán a "/"-re?

Hozzászólások

A FormTypeot is érdemes alakítani hozzá, hogy a plusz adatokat fel lehessen vinni: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_forms.md

De egy teljesen saját regisztrációs action / FormType létrehozása sem bonyolult, a UserManager segít: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/user_manager.md

Mai kétségbeesett kezdő kérdésem :)

File feltöltés:
Form builderrel készítem el a megjelenítendőket a twighez. Nem kötelező file-t csatolni a tárolásra kerülő szöveg mellé.
Sajnos submit-kor mégis kapok egy üzenetet, hogy "válasszon egy fájlt". Hiába adom meg a buildernek: 'required' => false
Mit hagyhattam ki?

Entity:

class Page
{
...
private $img1;

public function setImg1($img)
{
$this->img1=$img;
return $this;
}

public function getImg1()
{
return $this->img1;
}
...
}

Ez pedig a builder rész

class PageType extends AbstractType
{
...
public function buildForm(FormBuilderInterface $builder, array $options)
{
...
$builder->add('img1','file',array("attr" => array("accept" => "image/*",'required' => false, 'empty_data' => null)));
...
}
...
}

Twig rész:

{{ form_widget(form.img1, { 'attr': {'class': 'blabla'} }) }}

---
JMP $EA31

[ ...és már 10 éve regisztrált HUP felhasználó :) ]

Az 'attr' opció html attribútumok megadására való.
A 'required' opciónak az 'attr' opcióval egy szinten kell lennie, mert azzal nem (csak) egy html attribútumot akarsz megadni, hanem a file field működését szeretnéd befolyásolni.
Ugyanígy, az 'empty_data' is rossz helyen van, ennek sem az 'attr' tömbben kéne lennie (és egyébként, mivel a default értéke null, így meg sem kéne adnod).

A file field lehetséges opcióinak leírását itt láthatod: http://symfony.com/doc/current/reference/forms/types/file.html

Mai kérdésem:

Form builder

Egy ilyet szeretnék megvalósítani:

< form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:< br />
< input name="userfile[]" type="file" />

...
...
< input name="userfile[]" type="file" />

< input type="submit" value="Send files" />


A cél az, hogy több file upload mező legyen.

Ezzel próbálkozom:

/**
* @Assert\File(
* maxSize = "1500k",
* mimeTypes = {"image/png", "image/jpeg", "image/gif"},
* mimeTypesMessage = "Not an Image",
* maxSizeMessage = "Max. 1500KB",
* )
*/
private $arrFiles;

public function setArrFiles(array $arrFileArray)
{
$this->arrFiles=$arrFileArray;
}

public function getArrFiles()
{
return $this->arrFiles;
}

public function __construct()
{
$this->arrFiles = array();
}

----------------------------------------

$builder->add('arrFiles','file',
array
(
"label" => "valami label",
"required" => FALSE,
"attr" => array
(
"accept" => "image/jpeg,image/png,image/gif",
"multiple" => "multiple",
"name" => "arrFiles[]",
)
)
);

Első kérdésem, hogy egyáltalán így kell-e csinálni?

A második, hogy miként érem el a twig-ben, hogy mezőnként tudjam megjeleníteni?

Köszi a szakértést!