Witam,
jak mogę zapisać wybrany styl przez użytkownika do bazy danych ? W bazie utworzyłem pole o nazwie style, w którym ma być przechowywany wybrany jeden styl z pośród sześciu.
Kawałek kodu z folderu View->Layouts->default.ctp
<head> <?php http://www.php.net/echo $this->Html->css('style', http://www.php.net/array('rel' => 'stylesheet', 'title' => 'styl1')); ?> <?php http://www.php.net/echo $this->Html->css('style_brazowy', http://www.php.net/array('rel' => 'alternate stylesheet', 'title' => 'styl2')); ?> <?php http://www.php.net/echo $this->Html->css('style_niebieski', http://www.php.net/array('rel' => 'alternate stylesheet', 'title' => 'styl3')); ?> <?php http://www.php.net/echo $this->Html->css('style_pomaranczowy', http://www.php.net/array('rel' => 'alternate stylesheet', 'title' => 'styl4')); ?> <?php http://www.php.net/echo $this->Html->css('style_rozowy', http://www.php.net/array('rel' => 'alternate stylesheet', 'title' => 'styl5')); ?> <?php http://www.php.net/echo $this->Html->css('style_zielony', http://www.php.net/array('rel' => 'alternate stylesheet', 'title' => 'styl6')); ?> </head>
<form id="switchform"> <input type="radio" name="choice" value="styl1" onClick="chooseStyle(this.value, 60)"><?php http://www.php.net/echo $this->Html->image('czarny.png', http://www.php.net/array('width' => '150px', 'height' => '100px')); ?> <input type="radio" name="choice" value="styl2" onClick="chooseStyle(this.value, 60)"><?php http://www.php.net/echo $this->Html->image('brazowy.png', http://www.php.net/array('width' => '150px', 'height' => '100px')); ?> <input type="radio" name="choice" value="styl3" onClick="chooseStyle(this.value, 60)"><?php http://www.php.net/echo $this->Html->image('niebieski.png', http://www.php.net/array('width' => '150px', 'height' => '100px')); ?><br /><br /> <input type="radio" name="choice" value="styl4" onClick="chooseStyle(this.value, 60)"><?php http://www.php.net/echo $this->Html->image('pomaranczowy.png', http://www.php.net/array('width' => '150px', 'height' => '100px')); ?> <input type="radio" name="choice" value="styl5" onClick="chooseStyle(this.value, 60)"><?php http://www.php.net/echo $this->Html->image('rozowy.png', http://www.php.net/array('width' => '150px', 'height' => '100px')); ?> <input type="radio" name="choice" value="styl6" onClick="chooseStyle(this.value, 60)"><?php http://www.php.net/echo $this->Html->image('zielony.png', http://www.php.net/array('width' => '150px', 'height' => '100px')); ?> </form>
function settings(){ $this->User->id = $this->Auth->user('id'); $this->User->saveField('style', .... ); }
ja bym zrobił dodatkową tabelę w bazie danych np. Styles z następującymi polami: id, name, path (ścieżka do css), image (ścieżka do obrazka). W users pole style zamień na style_id i przechowuj id z tabeli styles. Później w layoucie sprawdzisz czy user jest zalogowany - jeśli jest to wczytasz styl ze ścieżki (będziesz miał to w sesji jeśli korzystasz z AuthComponent) a jeśli nie to wrzucisz jakiś domyślny.
Jest to dobre rozwiązanie lecz ja bym wolał stworzyć tylko dodatkową kolumne w tabeli Users o nazwie style i w niej przechowywać wybrany styl. Mój problem tkwi w tym, że nie mam pomysłu jak pobrać wartość value lub title w których jest przypisany wygląd pod nazwą styl1, styl2 itd. Dokładnie te wartości chcę pobrać i zapamiętać.
Brakuje mi drugiego argumentu, który będzie w poleceniu saveField
jeśli wszystkie style masz w jednym katalogu to w kolumnie style przechowuj tylko nazwę pliku. A value w radio buttonach to będzie po prostu ta nazwa pliku
Byś mógł mnie mniej więcej nakierować jak mogę pobrać value z input'a ?
Jeśli wysyłasz formularz postem to np. $_POST['choice'] albo $this->request->data['choice'] - ale zawsze warto użyć Cake'owego helpera do formularzy
Dziękuję za pomoc, utworzyłem kod, który poprawnie zapisuje i przechowuje dane w baziedanych. Sprawdzisz czy ten kawałek kodu ma prawdłową składnię czy trzeba go porprawić mimo że działa zapis danych.
function settings(){ if($this->request->is('post')){ $this->User->create(); $this->User->id = $this->Auth->user('id'); if ($this->User->saveField('style',$this->request->data['choice'])) { $this->Session->setFlash(__('Wybrany styl został dodany.')); return $this->redirect(http://www.php.net/array()); } else { $this->Session->setFlash(__('Błąd podczas zapisu, proszę spróbować ponownie.')); } } }
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)