0 レビュー
2 回答
php-kohanaは$_POSTデータを解析します
私はkohanaアプリケーションを持っており、いくつかのチェックボックスを備えたフォームがあり、ユーザーはフォームで自分の設定を確認することになっています。したがって、ユーザーテーブルと設定テーブルの間に1:nの関係があります。私の問題は、フォームで選択したこれらの設定を保存したいのですが、方法がわかりません。
私は次の形式をとっています:
<form id="address" method="POST" action="<?= Route::url('Save user preferences' , array('user_id' => $user));?>">
<? foreach ($prefered_products as $pp): ?>
<input type="checkbox" name="user_preferences_preference[]" value="<?= $pp ?>" /><?= $pp->product; ?><br />
<? endforeach; ?>
<button type="submit">Salveaza preferintele tale</button>
</form>
そしてデータを保存します:
foreach ($_POST['user_preferences_preference'] as $up) {
$user_preferences->prefered = $up;
$user_preferences->user = $this->user;
$user_preferences->save();
}
$this->view->message = __('Thank you for your feedback!');
しかし、設定を解析する方法が正しくないようです。次のようになります。ErrorException [警告]:foreach()に無効な引数が指定されました
複数の$_post設定を取得する方法について何か考えはありますか? ありがとう!
わからない
0
レビュー
答え :
解決策:
これを行う方法は少し異なります。
チェックボックスを作成すると、ゼロに設定された同一の非表示フィールドも作成します
<input type="hidden" name="my_check" value="0" />
<input type="checkbox" name="my_check" value="$value" />
チェックボックスをオンにすると、非表示の値が上書きされます。このようにフォームを送信すると、$ _ POST ['checkbox] = 1または0になりますが、常に$_POSTに存在します。
このメソッドの良いところは、Form :: checkboxヘルパーを拡張して、常に存在し、すべてのフォーム/コントローラーについて心配する必要がないようにすることです。
p.s.上記の例では、おそらく次のようにしたいと思うでしょう:
<input type="hidden" name="user_preferences_preference[$pp->id]" value="0" />
<input type="checkbox" name="user_preferences_preference[$pp->id]" value="<?= $pp ?>" />
<?= $pp->product; ?><br />
または、$pp->idの代わりに$key値を使用します。
わからない
0
レビュー
答え :
解決策:
問題は、チェックボックスが設定されている場合にのみデータを投稿することです。値を逆チェックする必要があります。つまり;
- データベースからすべての設定(ID)を取得します
- $_POST変数に値が見つかったかどうかを確認します
- そうでない場合は、dbでfalse(または0など)に更新します。設定されている場合は、値を読み取ります。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。