🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #230465

zmienne globalne JavaScript inicjowane przez PHP

#230465
From: jivanmukta
Date: Fri, 11 Jul 2014 10:38
37 lines
3642 bytes
Uczę się tworzyć dynamiczne witryny internetowe przy pomocy PHP5/MySQL/HTML/CSS/JavaScript/XML. Piszę pierwszą witrynę w CodeIgniterze.

Na stronie mam duży formularz. W zależności od wyboru na dwóch drop-down listach zmienia się widoczność pól formularza. Drop-down listy i niektóre inne pola wypełniane są danymi z bazy. Wybór z drop-down listy jest obsługiwany w widoku tak:

echo form_dropdown('property_estate_type_id', $estateTypes, null, ' onchange="showPropertyRows();" onkeyup="showPropertyRows();" onkeydown="showPropertyRows();" ');

Aby działała funkcja showPropertyRows() potrzebne są zmienne JavaScript :

<script type="text/javascript">
var furnitureTypes = <?php echo $furnitureTypes; ?>;	// słownik dla umeblowania
var units = <?php echo $units; ?>;	// słownik jednostek
var unitNames = <?php echo $unitNames; ?>;	// słownik nazw jednostek
var offerTypes = <?php echo $offerTypes; ?>;	// słownik dla typów ofert
var currencies = <?php echo $currencies; ?>;	// słownik dla walut
var estateTypesVisibility = <?php echo $estateTypesVisibility; ?>;
var priceFor = <?php echo $priceFor; ?>;
var offerTypesVisibility = <?php echo $offerTypesVisibility; ?>;
var priceForArray = <?php echo $priceForArray; ?>;	// kolejność wartości taka jak w priceFor
var vulgarWords = <?php echo $vulgarWords; ?>;	// słowa wulgarne
</script>

których wartości są wyznaczane w kontrolerze:

$this->load->library('common');
...
$params['units'] = $this->common->arrayToJS($model->getUnits(), 0);	// słownik jednostek
$params['unitNames'] = $this->common->arrayToJS($model->getUnitNames(), 0);	// słownik nazw jednostek
$params['offerTypes'] = $this->common->arrayToJS($model->getOfferTypes(), 0);	// słownik dla typów ofert
$params['currencies'] = $this->common->arrayToJS($model->getCurrencies(), 0);	// słownik dla walut
$params['estateTypesVisibility'] = $this->common->arrayToJS($model->getEstateTypesVisibility(), 0);
$params['priceFor'] = $this->common->visibilityJS($model->getPriceFor());
$params['offerTypesVisibility'] = $this->common->visibilityJS($model->getOfferTypesVisibility());
$params['priceForArray'] = $model->getPriceForArrayJS();	// kolejność wartości taka jak w priceFor
$params['vulgarWords'] = $this->common->arrayToJS($model->getVulgarWords(), 0);	// słowa wulgarne

Nie podoba mi się użycie zmiennych globalnych JavaScript i tworzenie kodu JavaScript w kontrolerze.
Czy da się to zrobić lepiej? Byłbym wdzięczny za pomysły.
Technical Details
Message-ID: <21ac89c2-5543-4f9c-a134-a7e5ce36ba8a@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!c11no1097347lbj.0!news-out.google.com!bp9ni3igb.0!nntp.google.com!hn18no674299igb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Received: by 10.58.195.180 with SMTP id if20mr883786vec.21.1405075098425;        Fri, 11 Jul 2014 03:38:18 -0700 (PDT)
X-Received: by 10.182.108.165 with SMTP id hl5mr6846obb.27.1405075098135; Fri, 11 Jul 2014 03:38:18 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!c11no1097347lbj.0!news-out.google.com!bp9ni3igb.0!nntp.google.com!hn18no674299igb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.php
Date: Fri, 11 Jul 2014 03:38:17 -0700 (PDT)
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.28.55.199; posting-account=Fd8BNwoAAACl8PCi6-fI0bkHGOgt6LMa
NNTP-Posting-Host: 83.28.55.199
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <21ac89c2-5543-4f9c-a134-a7e5ce36ba8a@googlegroups.com>
Subject: zmienne globalne JavaScript inicjowane przez PHP
From: jivanmukta@poczta.onet.pl
Injection-Date: Fri, 11 Jul 2014 10:38:18 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit