Article View: pl.comp.lang.php
Article #230465zmienne globalne JavaScript inicjowane przez PHP
From: jivanmukta
Date: Fri, 11 Jul 2014 10:38
Date: Fri, 11 Jul 2014 10:38
37 lines
3642 bytes
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-mailShow 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