Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Cake][CakePHP] Formularz wyboru modelu auta dopiero po wybraniu marki auta?, Formularz podobny jak na otomoto.pl
kleus
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 22.10.2009
Skąd: Siędzę

Ostrzeżenie: (0%)
-----


Witam...
mam w bazie tabele:
1. Makes -> id, name
2. Modeles -> id, make_id, name
3. Cars -> id, make_id, modele_id, motor...

Mam kontroller CarsController i w nim funkcje
  1. function add(){
  2. $Make = $this -> Makes -> find('list');
  3. $this -> set('Make', $Make);
  4.  
  5. $Model = $this -> Modeles -> find('list');
  6. $this -> set('Model', $Model);
  7. }


w widoku ładnie mi tworze pola wyboru marki i modelu auta, ale chciałbym żeby opcja wybory modelu auta była dostępna dopiero po wybraniu marki auta tak jak na otomoto.pl

Proszę o naprowadzenie jak utworzyć odwołanie z widoku do kontrolera aby ten pobrał właściwe dane i zwrócił do widoku...

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kleus
post
Post #2





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 22.10.2009
Skąd: Siędzę

Ostrzeżenie: (0%)
-----


wstawiam rozwiązanie może komuś się przyda. Bardzo dzięki za naprowadzenie jak rozwiązać 'zagadkę' ;D btw. Manual Cake jest naprawdę bardzo dobrze opisany.
W default.ctp dodajmy
  1. <?php echo $javascript->link(array('jquery-1.6.2.min', 'prototype', 'scriptaculous')); ?>

  1. CarsController.php
  2. <?php
  3. class CarsController extends AppController{
  4. var $name = 'Cars';
  5. var $helpers = array('Html','Form','Ajax');
  6. var $components = array('RequestHandler');
  7. var $uses = array('Modeles','Makes', 'Cars');
  8.  
  9. function add(){
  10. $Makes = $this -> Makes -> find('list');
  11. $conditions = array( 'order' => 'Modeles.make_id' );
  12. $this -> set('Make', $Makes);
  13. }
  14. function update_select(){
  15. $Modele = $this -> Modeles -> find('list', array('conditions' => array('make_id' => $this -> data['Cars']['Make_id'])));
  16. $this -> set('Modele', $Modele);
  17. }
  18. }
  19.  
  20. ?>
WIDOK ADD.CTP
  1. <h2>New Car</h2>
  2. <?php echo $this->Form->create('Cars'); ?>
  3. <?php echo $this->Form->input('Make_id', array('options' => $Make, 'empty' => ''), null, array('id' => 'make_id', 'label' => 'Marka'));?>
  4. <?php $options = array('url' => 'update_select','update' => 'CarsModeleId');?>
  5. <?php echo $ajax->observeField('CarsMakeId', $options);?>
  6. <?php echo $this->Form->input('Modele_id', array('options' => '', 'empty' => ' '), null, array('id' => 'modele', 'label' => 'Model'));?>
  7. <?php echo $this->Form->end(); ?>
WIDOK UPDATE_SELECT.CTP
  1. <?php
  2. echo "<option value=\"\"> </option>\n";
  3. foreach($Modele as $k => $v) {
  4. echo "<option value=\"$k\">$v</option>\n";
  5. }
  6. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 05:25