Article View: pl.comp.lang.php
Article #219874Re: Symfony 1.2 formularze
From: bwx
Date: Sun, 26 Jul 2009 22:27
Date: Sun, 26 Jul 2009 22:27
80 lines
3968 bytes
3968 bytes
On 26 Lip, 21:57, Wojciech Bancer <prot...@post.pl> wrote:
> On 2009-07-26, bwx <bwale...@gmail.com> wrote:
>
>
>
> > Witam,
>
> > Mam pytanie czy ktoś może kto robił coś w Symfony 1.0 po przejściu na
> > 1.2 natknął się na podobny problem z formularzami.
>
> > Mianowicie w 1.0 gdy chciałem podmienić lub przetworzyć daną którą
> > otrzymywałem z formularza przed zapisaniem do bazy
> > robiłem to prosto w akcji odpowiedzialnej za zapisanie tworzyłem nowy
> > obiekt klasy modelu w którym zapisywałem,
>
> > $obiekt = new Obiektklasy;
>
> > potem $obiekt->setPole($zmienna);
> > $obiekt->save(); i tyle mogłem tam wkładać responsy itp. a teraz
> > przyznam, nie wiem jak podmienić jedną linijką
> > jedni pole z formularza w action.class.php przed zapisaniem ??
>
> > jak to się robi wykorzystując ten nowy model formularzy ?
>
> - obiekt klasy formularza, metoda $form->getObject() zwraca Ci
> obiekt ORM i robisz jak wyżej - dobre w partialach admin
> generatora.
>
> - nadpisujesz metodę save klasy formularza,
> a w niej masz dostęp przez $this->getObject()
Dzięki za odp. poniżej przykład z crud generatora na szybko
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request-
>getFiles($form->getName()));
if ($form->isValid())
{
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request-
>getFiles($form->getName()));
if ($form->isValid())
{
$form->getObject()->setSatus('1');
$form->save();
$this->redirect('zwiastuny/show?id='.$form->getId());
}
}
i dostaję Unable to execute INSERT statement. [wrapped: SQLSTATE
[23000]: Integrity constraint violation: 1048 Column 'status' cannot
be null]
czyli nie przekazuje tej wartości sprawdziłem i tak jest. Problem mam
taki, że pole na formularzu jest disabled - wtedy nie idzie w poscie
(html tak ma) i cały ten s1.2 piękny system formularzy się wywala bo
mi i tak nadpisuje ten $form->getObject()->setSatus('1'); tym co jest
w formularzu wywołując wewnętrzną metodę doSave() (ją wywołuje save())
i DUPA :(
wymyśliłem tak (działa):
// $v = $form->getValues();
// $v['status'] = 1;
// $obj= $form->updateObject($v);
// $obj->save();
// $this->redirect('zwiastuny/show?id='.$obj->getId());
ale gdzie ta elegancja jednej linii !!! z syfony 1.0 ....
Ktoś zna łatwiejszy sposób ?
pozdrawiam serdecznie,
Bartek
Technical Details
Message-ID:
<df75d69e-b31b-4929-95bf-bc97eac2c9cf@k30g2000yqf.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!k30g2000yqf.googlegroups.com!not-for-mailReferences:
<093c9676-b1eb-4648-9e9c-1de3adb7ed71@h21g2000yqa.googlegroups.com> <slrnh6pd9b.qtm.proteus@pl-test.org>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!k30g2000yqf.googlegroups.com!not-for-mail From: bwx <bwalecki@gmail.com> Newsgroups: pl.comp.lang.php Subject: Re: Symfony 1.2 formularze Date: Sun, 26 Jul 2009 15:27:42 -0700 (PDT) Organization: http://groups.google.com Lines: 84 Message-ID: <df75d69e-b31b-4929-95bf-bc97eac2c9cf@k30g2000yqf.googlegroups.com> References: <093c9676-b1eb-4648-9e9c-1de3adb7ed71@h21g2000yqa.googlegroups.com> <slrnh6pd9b.qtm.proteus@pl-test.org> NNTP-Posting-Host: 82.210.167.152 Mime-Version: 1.0 X-Trace: posting.google.com 1248647264 2067 127.0.0.1 (26 Jul 2009 22:27:44 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Sun, 26 Jul 2009 22:27:44 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: k30g2000yqf.googlegroups.com; posting-host=82.210.167.152; posting-account=s8bfAQoAAACj8bK3mlSqk5BJXchXAZhG User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729),gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit