blob: 5dd084c4cdd9a7a6d8067a7a115994b26ff2ef5c (
plain)
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
|
<com:TContent ID="body" >
<h1 id="138046">Views - AR Classes Update</h1>
<com:SinceVersion Version="4.0" />
<p class="block-content">
Usually when you use <tt>Active Records Classes</tt> to interact with your Data Base
you also build some proper views to handle them. To save every element of your views in your Data Base
you need first to assign everyone of them to their corresponding attribute in one of your AR Classes.
This task is really tedious and usually takes a significant amount of your time.
Thats why Prado offers an automatic mechanism to update your views from your AR Classes and vice versa.
</p>
<h2>Updating views from AR Classes</h2>
<p>Instead of assign each attribute in your AR Class to your view controls like this:</p>
<com:TTextHighlighter CssClass="source block-content">
$student = AR_Student::finder()->findByPk(1);
$this->name->Text = $student->name;
$this->age->Text = $student->age;
$this->gender->Text = $student->gender;
$this->average->Text = $student->average;
</com:TTextHighlighter>
<p>You can do the same as follows:</p>
<com:TTextHighlighter CssClass="source block-content">
$student = AR_Student::finder()->findByPk(1);
$this->tryToUpdateView($student);
</com:TTextHighlighter>
<h2>Updating AR Classes from views</h2>
<p>Instead of assign each attribute in your views to your AR Classes like this:</p>
<com:TTextHighlighter CssClass="source block-content">
$student = new AR_Student();
$student->name = $this->name->Text;
$student->age = $this->age->Text;
$student->gender = $this->gender->Text;
$student->average = $this->average->Text;
$student->save();
</com:TTextHighlighter>
<p>You can do the same as follows:</p>
<com:TTextHighlighter CssClass="source block-content">
$student = new AR_Student();
$this->tryToUpdateAR($student);
$student->save();
</com:TTextHighlighter>
<div class="info"><b class="note">Info:</b>
Note that the identifiers of your controls should be exactly the same of the attributes of your
AR Classes... otherwise nothing will happen.
</div>
</com:TContent>
|