Subversion-Projekte lars-tiefland.prado

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<com:TContent ID="Main">
2
 
3
<h1>Membuat Halaman <tt>AdminUser</tt></h1>
4
 
5
<p>
6
Halaman <tt>AdminUser</tt> menampilkan semua akun pengguna dalam sebuah daftar agar administrator dapat melakukan beberapa pekerjaan administratif. Demi kemudahan, pekerjaan administratif sistem blog kita mendukung termasuk mengedit dan menghapus akun pengguna.
7
</p>
8
 
9
<p>
10
Kita akan menampilkan daftar pengguna dalam sebuah tabel. Setiap baris tabel mewakili satu akun pengguna, dan kolom berikut ditampilkan:
11
</p>
12
<ul>
13
<li>Username - menampilkan nama pengguna. Dalam setiap sel sebuah hiperlink ditampilkan membawa ke halaman <a href="?page=Day3.CreateEditUser">EditUser</a> terkait.</li>
14
<li>Email - menampilkan email.</li>
15
<li>Administrator - menampilkan apakah akun pengguna adalah aturan administrator.</li>
16
<li>Command - menampilkan kolom dengan tombol "Delete". Mengklik pada setiap tombol akan mengakibatkan penghapusan akun pengguna terkait.</li>
17
</ul>
18
 
19
<p>
20
Kita membuat dua file <tt>protected/pages/users/AdminUser.page</tt> dan <tt>protected/pages/users/AdminUser.php</tt> masing-masing untuk menyimpan template halaman dan kelas halaman.
21
</p>
22
 
23
<h2>Membuat Template Halaman</h2>
24
<p>
25
Kita menggunakan <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.DataGrid">TDataGrid</a> untuk menampilkan akun pengguna. Berdasarkan pada analisis di atas, kita mengkonfigurasi empat kolom berikut:
26
</p>
27
<ul>
28
<li><a href="http://www.pradosoft.com/docs/classdoc/THyperLinkColumn">THyperLinkColumn</a> menampilkan kolom nama pengguna. URL dibentuk berdasarkan pada ekstensi PHP yang ditetapkan dalam properti <tt>DataNavigateUrlFormatString</tt>.</li>
29
<li><a href="http://www.pradosoft.com/docs/classdoc/TBoundColumn">TBoundColumn</a> menampilkan kolom email.</li>
30
<li><a href="http://www.pradosoft.com/docs/classdoc/TCheckBoxColumn">TCheckBoxColumn</a> menggunakan kotak centang untuk menunjukan apakah akun pengguna adalah aturan administrator.</li>
31
<li><a href="http://www.pradosoft.com/docs/classdoc/TButtonColumn">TButtonColumn</a> menampilkan kolom dengan tombol "Delete".</li>
32
</ul>
33
 
34
<p>Template halaman lengkap ditampilkan seperti berikut:</p>
35
 
36
<com:TTextHighlighter CssClass="source" Language="prado">
37
&lt;%@ Title="My Blog - Manage User Accounts" %>
38
 
39
&lt;com:TContent ID="Main">
40
 
41
<h1>Manage User Accounts</h1>
42
 
43
<a href="&lt;%= $this->Service->constructUrl('users.NewUser')%>">Create New User</a>
44
<br/>
45
 
46
&lt;com:TDataGrid ID="UserGrid"
47
    DataKeyField="username"
48
    AutoGenerateColumns="false"
49
    OnDeleteCommand="deleteButtonClicked">
50
 
51
    &lt;com:THyperLinkColumn
52
        HeaderText="Username"
53
        DataTextField="username"
54
        DataNavigateUrlField="username">
55
        &lt;prop:DataNavigateUrlFormatString>#
56
          $this->Service->constructUrl('users.EditUser',array('username'=>{0}))
57
        &lt;/prop:DataNavigateUrlFormatString>
58
    &lt;/com:THyperLinkColumn>
59
 
60
    &lt;com:TBoundColumn
61
        HeaderText="Email"
62
        DataField="email" />
63
 
64
    &lt;com:TCheckBoxColumn
65
        HeaderText="Administrator"
66
        DataField="role" />
67
 
68
    &lt;com:TButtonColumn
69
        HeaderText="Command"
70
        Text="Delete"
71
        ButtonType="PushButton"
72
        CommandName="delete" />
73
 
74
&lt;/com:TDataGrid>
75
 
76
&lt;/com:TContent>
77
</com:TTextHighlighter>
78
 
79
 
80
<h2>Membuat Kelas Halaman</h2>
81
 
82
<p>
83
Dalam template halaman di atas, event <tt>OnDeleteCommand</tt> datagrid dengan metode <tt>deleteButtonClicked()</tt> akan kita implementasikan dalam kelas halaman. Sebagai tambahan, datagrid perlu dipopulasi dengan data akun pengguna saat halaman diinisialisasi. Oleh karena itu, kita menulis kelas halaman seperti berikut:
84
</p>
85
 
86
<com:TTextHighlighter CssClass="source" Language="php">
87
class AdminUser extends TPage
88
{
89
    /**
90
     * Mempopulai datagrid dengan daftar pengguna.
91
     * Metode ini dipanggil oleh kerangka kerja saat inisialisasi halaman
92
     * @param mixed event parameter
93
     */
94
    public function onInit($param)
95
    {
96
        parent::onInit($param);
97
        // ambil semua informasi data akun
98
        $this->UserGrid->DataSource=UserRecord::finder()->findAll();
99
        // mengikat data ke komponen antarmua
100
        $this->UserGrid->dataBind();
101
    }
102
 
103
    /**
104
     * Menghapus rekaman pengguna yang ditetapkan.
105
     * Metode ini merespon ke event OnDeleteCommand pada datagrid.
106
     * @param TDataGrid pengirim event
107
     * @param TDataGridCommandEventParameter parameter event
108
     */
109
    public function deleteButtonClicked($sender,$param)
110
    {
111
        // dapatkan item datagrid yang berisi tombol hapus yang diklik
112
        $item=$param->Item;
113
        // dapatkan kunci primer terkait ke item datagrid
114
        $username=$this->UserGrid->DataKeys[$item->ItemIndex];
115
        // menghapus rekaman pengguna dengan kunci primer nama pengguna
116
        UserRecord::finder()->deleteByPk($username);
117
    }
118
}
119
</com:TTextHighlighter>
120
 
121
<p>
122
Dalam kode di atas, metode <tt>deleteButtonClicked()</tt> dipanggil kapan saja tombol "Delete" diklik. untuk menentukan baris mana pada tombol yang diklik, kita memeriksa properti <tt>Item.ItemIndex</tt> pada parameter event. Untuk selanjutnya mengidentifikasi akun pengguna mana yang akan dihapus, kita mengambil nilai kunci primer (username) melalui properti <tt>DataKeys</tt> pada DataGrid.
123
</p>
124
 
125
<com:TipBox>
126
Semua kontrol <a href="http://www.pradosoft.com/docs/classdoc/TDataBoundControl">data-bound</a> mempunyai pola penggunaan yang sama. Yaitu, Setel properti <tt>DataSource</tt> dengan data dan panggil metode <tt>dataBind()</tt> untuk mengikat data ke struktur internal kontrol.
127
</com:TipBox>
128
 
129
 
130
<h2>Pengujian</h2>
131
<p>
132
Untuk menguji halaman <tt>AdminUser</tt>, kunjungi URL <tt>http://hostname/blog/index.php?page=users.AdminUser</tt>. Anda mungkin perlu masuk sebagai administrator lebih dahulu jika Anda belum melakukannya. Kita akan melihat hasil seperti berikut.
133
</p>
134
 
135
<img src="<%~ output3.gif %>" class="output" />
136
 
137
</com:TContent>