我需要的是有人看到爲什麼CakePHP(Ver 2.2.2)正在做它正在做的事情?好的我的代碼細目如下。 DIV PageList是一個JQuery Accordion,帶有兩個下拉菜單,一個用於管理員添加新用途,另一個用於查看所有用戶並進行一些更改。添加用戶很好,工作沒有任何問題。CakePHP,帶頁面結果的表單助手標籤問題
我的問題是(或者至少我認爲它是)與表格助手,我確實有我的foreach循環之前的表單創建調用,並沒有任何問題,我會找到用戶我想改變的東西然後保存,沒問題。當我說明對結果進行分頁時,我開始出現問題。當表單創建不在foreach中並且在我的表代碼開始之前,只有最後顯示的結果才能保存所做的更改。我發現問題的原因,那就是ID字段總是默認爲最後顯示的結果。所以我將Form Create移到了我的foreach循環中。
這現在可以工作,但由於某種原因,它馬上開始結束,因此我的輸入現在在表單標籤之外?我不明白爲什麼,因爲我在foreach循環的底部有Form Helper end()調用。因此它應該以自己的形式顯示每個用戶。
我不確定這是否是一個問題,仍然可以像這樣使用它。但是一個問題是我的表格現在開始在我的表格之後,這不會通過W3C驗證,這不是一個大問題。注意,還可以使用表格嗎?我正在與他們列出數據?我正在學習HTML 5規範。但並沒有真正看到任何關於表讓...
非常感謝。格倫柯蒂斯。
echo '<div id="PageList">';
$OutputHolder = '<h3 class="Background-Titles">Add User</h3>';
$OutputHolder .= '<div class="Background-Content" id="AdminAddUser">';
$OutputHolder .= $this->Form->create('User', array('url'=>'http://glenns-showcase.net/projects/cake/DrWho/adminadd/', 'inputDefaults' => array('div' => false)));
$OutputHolder .= $this->Form->input('username');
$OutputHolder .= $this->Form->input('password');
$OutputHolder .= $this->Form->input('firstname');
$OutputHolder .= $this->Form->input('surname');
$OutputHolder .= $this->Form->input('email');
$OutputHolder .= 'Select Role For User <br />';
$OutputHolder .= $this->Form->radio('role_id', $opt_role, $attributes);
$OutputHolder .= '<br />Select Active State For User <br />';
$OutputHolder .= $this->Form->radio('active', $opt_active, $attributes);
$OutputHolder .= $this->Form->end('Submit');
$OutputHolder .= '</div>'; //End for AddUser
echo $OutputHolder;
$OutputViewUsers = '<h3 class="Background-Titles">View All Users</h3>';
$OutputViewUsers .= '<div class="Background-Content" id="AdminViewUsers">';
$OutputViewUsers .= '<table border="0">';
$OutputViewUsers .= '<tr><td>Username</td><td>First Name</td><td>Surname</td><td>E-mail</td><td>Stutus</td><td>Level</td><td>Save</td></tr>';
foreach($users as $key => $value) {
$OutputViewUsers .= $this->Form->create('UserEdit', array('url'=>'http://glenns-showcase.net/projects/cake/DrWho/adminedit/', 'inputDefaults' => array('div' => false)));
$BaseLink = $users[$key]['User'];
$OutputViewUsers .= "<td class=\"AdminViewUsersUN\">" .($BaseLink ['username']) . "</td>";
$OutputViewUsers .= "<td>" . $this->Form->input('fname', array('default' => $BaseLink ['firstname'], 'label' => false, 'class' => 'AdminViewUsersFN')) . "</td>";
$OutputViewUsers .= "<td>" . $this->Form->input('sname', array('default' => $BaseLink ['surname'], 'label' => false, 'class' => 'AdminViewUsersSN')). "</td>";
$OutputViewUsers .= "<td>" . $this->Form->input('email', array('default' => $BaseLink ['email'], 'label' => false, 'class' => 'AdminViewUsersEM')). "</td>";
$OutputViewUsers .= "<td>" . $this->Form->select('active', $ActOpts, array('empty' => false, 'default' => $BaseLink ['active'], 'class' => 'AdminViewUsersAS')). "</td>";
$OutputViewUsers .= "<td>" . $this->Form->select('role', $RoleOpts, array('empty' => false, 'default' => $users[$key]['Role']['id'], 'class' => 'AdminViewUsersUL')). "</td>";
$OutputViewUsers .= $this->Form->hidden('id', array('default' => $BaseLink ['id'],));
$OutputViewUsers .= "<td>" . $this->Form->submit('Save', array('div' => false, 'class' => 'AdminViewUsersSB')). "</td></tr>";
//$test = array('label' => 'Save', 'div' => array('class' => 'AdminViewUsersSB'));
$OutputViewUsers .= $this->Form->end();
} //End of foreach loop
$OutputViewUsers .= '</table>';
$OutputViewUsers .= $this->Paginator->numbers(array('first' => 2));
$OutputViewUsers .= '</div>'; //End for AllUsers
echo $OutputViewUsers;
echo '</div>'; //End for PageList
UPDATE :::
這是現在的樣子!但現在,這更多或者更少是我以前的方式。我已添加缺少的標記。但是現在只能讓最後的結果工作!我爲每頁的5個結果進行分頁,並且頁面上的前四個結果將不起作用,因爲它們具有錯誤的ID號,每次按下「保存」時,僅提供最後結果的ID。
據我所知我是這麼做的,我不確定你的意思是「索引輸入字段」,而是用「賦予提交元素唯一名稱包含相關記錄的適當索引」有一個提供ID的隱藏字段。
我對我的看法是,我必須將整個表單放在循環中,以便每個返回的結果都以自己的形式存在,那麼應該沒有錯誤!不過,我不能把我的表的開始放在循環中,或者我爲每個結果都有一個標題!我想我應該可以解決這個問題!
很多感謝您的幫助!
$OutputViewUsers = '<h3 class="Background-Titles">View All Users</h3>';
$OutputViewUsers .= '<div class="Background-Content" id="AdminViewUsers">';
$OutputViewUsers .= $this->Form->create('UserEdit', array('url'=>'http://glenns-showcase.net/projects/cake/DrWho/adminedit/', 'inputDefaults' => array('div' => false)));
$OutputViewUsers .= '<table border="0">';
$OutputViewUsers .= '<tr><td>Username</td><td>First Name</td><td>Surname</td><td>E-mail</td><td>Stutus</td><td>Level</td><td>Save</td></tr>';
foreach($users as $key => $value) {
$BaseLink = $users[$key]['User'];
$OutputViewUsers .= "<tr><td class=\"AdminViewUsersUN\">" .($BaseLink ['username']) . "</td>";
$OutputViewUsers .= "<td>" . $this->Form->input('fname', array('default' => $BaseLink ['firstname'], 'label' => false, 'class' => 'AdminViewUsersFN')) . "</td>";
$OutputViewUsers .= "<td>" . $this->Form->input('sname', array('default' => $BaseLink ['surname'], 'label' => false, 'class' => 'AdminViewUsersSN')). "</td>";
$OutputViewUsers .= "<td>" . $this->Form->input('email', array('default' => $BaseLink ['email'], 'label' => false, 'class' => 'AdminViewUsersEM')). "</td>";
$OutputViewUsers .= "<td>" . $this->Form->select('active', $ActOpts, array('empty' => false, 'default' => $BaseLink ['active'], 'class' => 'AdminViewUsersAS')). "</td>";
$OutputViewUsers .= "<td>" . $this->Form->select('role', $RoleOpts, array('empty' => false, 'default' => $users[$key]['Role']['id'], 'class' => 'AdminViewUsersUL')). "</td>";
$OutputViewUsers .= $this->Form->hidden('id', array('default' => $BaseLink ['id'],));
$OutputViewUsers .= "<td>" . $this->Form->submit('Save', array('div' => false, 'class' => 'AdminViewUsersSB')). "</td></tr>";
} //End of foreach loop
$OutputViewUsers .= '</table>';
$OutputViewUsers .= $this->Form->end();
$OutputViewUsers .= $this->Paginator->numbers(array('first' => 2));
$OutputViewUsers .= '</div>'; //End for AllUsers
echo $OutputViewUsers;
另一個更新::
這筆現在看來工作,每個結果是在自己的表單元素,並全部投入還是現在的表單標籤內。但是,每個結果現在都有自己的頭文件,因爲我現在在表格中有表格,但現在在我的foreach循環中,所以每次循環時,都會在結果頂部回顯/打印標題。我正在研究這個。任何幫助仍然是最受歡迎的!
foreach($users as $key => $value) {
$OutputViewUsers .= $this->Form->create('UserEdit', array('url'=>'http://glenns-showcase.net/projects/cake/DrWho/adminedit/', 'inputDefaults' => array('div' => false)));
$OutputViewUsers .= '<table border="0">';
$OutputViewUsers .= '<tr><td>Username</td><td>First Name</td><td>Surname</td><td>E-mail</td><td>Stutus</td><td>Level</td><td>Save</td></tr>';
$BaseLink = $users[$key]['User'];
$OutputViewUsers .= "<tr><td class=\"AdminViewUsersUN\">" .($BaseLink ['username']) . "</td>";
$OutputViewUsers .= "<td>" . $this->Form->input('fname', array('default' => $BaseLink ['firstname'], 'label' => false, 'class' => 'AdminViewUsersFN')) . "</td>";
$OutputViewUsers .= "<td>" . $this->Form->input('sname', array('default' => $BaseLink ['surname'], 'label' => false, 'class' => 'AdminViewUsersSN')). "</td>";
$OutputViewUsers .= "<td>" . $this->Form->input('email', array('default' => $BaseLink ['email'], 'label' => false, 'class' => 'AdminViewUsersEM')). "</td>";
$OutputViewUsers .= "<td>" . $this->Form->select('active', $ActOpts, array('empty' => false, 'default' => $BaseLink ['active'], 'class' => 'AdminViewUsersAS')). "</td>";
$OutputViewUsers .= "<td>" . $this->Form->select('role', $RoleOpts, array('empty' => false, 'default' => $users[$key]['Role']['id'], 'class' => 'AdminViewUsersUL')). "</td>";
$OutputViewUsers .= $this->Form->hidden('id', array('default' => $BaseLink ['id'],));
$OutputViewUsers .= "<td>" . $this->Form->submit('Save', array('div' => false, 'class' => 'AdminViewUsersSB')). "</td></tr>";
//$test = array('label' => 'Save', 'div' => array('class' => 'AdminViewUsersSB'));
$OutputViewUsers .= '</table>';
$OutputViewUsers .= $this->Form->end();
} //End of foreach loop