私が必要としているのは、CakePHP (Ver 2.2.2) が何をしているのかを理解してくれる人ですか? 私のコードの内訳は次のとおりです。DIV PageList は JQuery アコーディオンであり、2 つのドロップダウンがあります。1 つは管理者が新しい用途を追加するためのもので、もう 1 つはすべてのユーザーを表示して変更を加えるためのものです。ユーザーの追加は正常で、問題なく動作します。
私の問題は、フォーム ヘルパーを使用することです (または、そうではないと思います)。以前に foreach ループの外側でフォーム作成呼び出しを行っていましたが、問題なく動作していました。何かを変更したいユーザーを見つけて保存します。 、 問題なし。結果をページ化すると述べたとき、問題が発生し始めました。Form Create が foreach の外にあり、テーブル コードの開始直前にあったときと同様に、最後に表示された結果のみが変更を保存できます。私は問題の原因を見つけました。それは、ID フィールドが常に最後に表示された結果にデフォルト設定されていたことです。そのため、Form Create を foreach ループ内に移動しました。
これは機能するようになりましたが、何らかの理由ですぐに終了を開始するため、入力がフォーム タグの外側に配置されるようになりました。foreach ループの最後にエンド フォーム ヘルパーの end() 呼び出しがあるため、その理由がわかりません。したがって、各ユーザーを独自の形式で表示する必要があります。
これが問題であるかどうかはわかりませんが、このまま使用できます。しかし、1 つの問題は、フォームがテーブルの後に開始されることです。これは 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
アップデート :::
これが今の姿です!しかし、これは今、私が以前に持っていた方法とほぼ同じです。欠けていたタグを追加しました。しかし、これでは最後の結果しか機能しません! ページごとに 5 つの結果をページ分割しますが、ページの上位 4 つの結果は、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