Vraag omtrent CakePHP
Beste mensen,
Ik ben voor mezelf bezig met een facturatie programma te schrijven. Dit heb ik al redelijk opgezet met het framework CakePHP.
Nu zit ik met een klein probleem namelijk:
Als ik een factuur toe wil voegen, wil ik uiteraard ook factuurregels laten zien. Dat is me ook al gelukt. Maar nu wil ik het factuurnummer (die ik zelf invoer). Meegeven aan de factuurregels als hidden input field.
Hoe kan ik dit het beste doen?
Me view en controller zien er als volgt uit:
[Functie in me code die de factuur aanmaakt]
[Mijn view, waar dus data in 2 models opgeslagen worden.]
<div id='factuurtoevoegen'>
<div class='factuurleft'>
<table border="0">
</div>
Ik ben voor mezelf bezig met een facturatie programma te schrijven. Dit heb ik al redelijk opgezet met het framework CakePHP.
Nu zit ik met een klein probleem namelijk:
Als ik een factuur toe wil voegen, wil ik uiteraard ook factuurregels laten zien. Dat is me ook al gelukt. Maar nu wil ik het factuurnummer (die ik zelf invoer). Meegeven aan de factuurregels als hidden input field.
Hoe kan ik dit het beste doen?
Me view en controller zien er als volgt uit:
[Functie in me code die de factuur aanmaakt]
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function add($klantnummer = NULL, $klantnaam = NULL){
$this->layout = 'manage';
$this->set('klantnummer', $klantnummer);
$this->set('klantnaam', $klantnaam);
if(!empty($this->data)){
if($this->Invoice->save($this->data)){
if($this->Factuurregel->save($this->data)){
$this->Session->setFlash('Factuur is toegevoegd');
$this->redirect(array('action'=>'lijst'));
}
}
else{
$this->Session->setFlash('Er is iets fout gegaan, controleer de gegevens en probeer het opnieuw');
}
}
}
?>
function add($klantnummer = NULL, $klantnaam = NULL){
$this->layout = 'manage';
$this->set('klantnummer', $klantnummer);
$this->set('klantnaam', $klantnaam);
if(!empty($this->data)){
if($this->Invoice->save($this->data)){
if($this->Factuurregel->save($this->data)){
$this->Session->setFlash('Factuur is toegevoegd');
$this->redirect(array('action'=>'lijst'));
}
}
else{
$this->Session->setFlash('Er is iets fout gegaan, controleer de gegevens en probeer het opnieuw');
}
}
}
?>
[Mijn view, waar dus data in 2 models opgeslagen worden.]
<div id='factuurtoevoegen'>
<div class='factuurleft'>
<table border="0">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php echo $form->create('Invoice', array('action'=>'add'));
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Factuurnummer:</label>";
echo $form->input('factuurnummer');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Klantnaam:</label>";
echo $form->input('klantnaam', array('type'=>'text', 'value'=>$klantnaam));
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>klantnummer:</label>";
echo $form->input('klantid', array('type'=>'text', 'value'=>$klantnummer));
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Factuurdatum:</label>";
echo $form->input('factuurdatum');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Betreft:</label>";
echo $form->input('betreft');
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</div>";
echo "<div class='factuurright'>";
echo "<table border='0'>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Aanmaning:</label>";
echo $form->input('aanmaning');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Aanmaningsdatum:</label>";
echo $form->input('aanmaningsdatum');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Betaald:</label>";
echo $form->input('betaald');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Betaaldatum:</label>";
echo $form->input('betaaldatum');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Btw:</label>";
echo $form->input('btw');
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</div>";
echo "<table border='0'>";
echo "<th>Beschrijving</th>";
echo "<th>Aantal</th>";
echo "<th>Prijs</th>";
echo $form->create('Factuurregel', array('action'=>'add'));
echo "<tr>";
echo "<td>" .$form->input('beschrijving')."</td>";
echo "<td>" .$form->input('aantal')."</td>";
echo "<td>" .$form->input('prijs')."</td>";
echo "</tr>";
echo "</table>";
echo $form->end('Factuur toevoegen');
?>
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Factuurnummer:</label>";
echo $form->input('factuurnummer');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Klantnaam:</label>";
echo $form->input('klantnaam', array('type'=>'text', 'value'=>$klantnaam));
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>klantnummer:</label>";
echo $form->input('klantid', array('type'=>'text', 'value'=>$klantnummer));
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Factuurdatum:</label>";
echo $form->input('factuurdatum');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Betreft:</label>";
echo $form->input('betreft');
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</div>";
echo "<div class='factuurright'>";
echo "<table border='0'>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Aanmaning:</label>";
echo $form->input('aanmaning');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Aanmaningsdatum:</label>";
echo $form->input('aanmaningsdatum');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Betaald:</label>";
echo $form->input('betaald');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Betaaldatum:</label>";
echo $form->input('betaaldatum');
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<label for='adres'>Btw:</label>";
echo $form->input('btw');
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</div>";
echo "<table border='0'>";
echo "<th>Beschrijving</th>";
echo "<th>Aantal</th>";
echo "<th>Prijs</th>";
echo $form->create('Factuurregel', array('action'=>'add'));
echo "<tr>";
echo "<td>" .$form->input('beschrijving')."</td>";
echo "<td>" .$form->input('aantal')."</td>";
echo "<td>" .$form->input('prijs')."</td>";
echo "</tr>";
echo "</table>";
echo $form->end('Factuur toevoegen');
?>
</div>
Om even terug te komen op mijn vorige bericht, heb ik het probleem opgelost. Ik moest de saveAll functie gebruiken. Een voorbeeld van mijn nieuwe functie voor de liefhebbers:
Heeft iemand vragen o.i.d? stel ze gerust.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
function add($factuurregels = NULL){
$this->layout = 'manage';
$klanten = $this->Klanten->find('list', array('fields'=> 'klantnaam'));
$this->set('klanten', $klanten);
$this->set('factuurregels', $factuurregels);
if(!empty($this->data)){
if ($this->Invoice->save($this->data['Invoice'])){
if($this->Factuurregel->saveAll($this->data['Factuurregel'])){
$this->Session->setFlash('Uw factuur met nummer '.$this->data['Invoice']['factuurnummer'].' is toegevoegd');
$this->redirect(array('action'=>'lijst'));
}
}
else
{
$this->Session->setFlash('Er is iets fout gegaan, controleer de gegevens en probeer het opnieuw');
}
}
}
?>
function add($factuurregels = NULL){
$this->layout = 'manage';
$klanten = $this->Klanten->find('list', array('fields'=> 'klantnaam'));
$this->set('klanten', $klanten);
$this->set('factuurregels', $factuurregels);
if(!empty($this->data)){
if ($this->Invoice->save($this->data['Invoice'])){
if($this->Factuurregel->saveAll($this->data['Factuurregel'])){
$this->Session->setFlash('Uw factuur met nummer '.$this->data['Invoice']['factuurnummer'].' is toegevoegd');
$this->redirect(array('action'=>'lijst'));
}
}
else
{
$this->Session->setFlash('Er is iets fout gegaan, controleer de gegevens en probeer het opnieuw');
}
}
}
?>
Heeft iemand vragen o.i.d? stel ze gerust.




