質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

1220閲覧

Laravelでチェックボックスをcheckedにできない(ver 4.2.11)

Chandler_Bing

総合スコア673

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/06/18 11:35

編集2020/06/18 12:55

お疲れ様です。

Laravelでチックボックスにcheckedが付きません。

以下、処理の流れと必要情報です。
※業務内容なので、かなり簡略化しました。
※すぐにヒントを頂きたかったので、疑似ソースは作りこめていません

処理の流れ

①画面にラジオボタンを表示する
②選択する
③POSTする
④バリデートエラーをだし、画面にとどまる
⑤その際にチェックボックスに直前の選択肢をチェックしたい

共有内容
入力画面
イメージ説明
ポストされる値

php

1'sample_check_box_arr' => 2 0 => string '1' //サンプル1 3 1 => string '2' //サンプル2 4 2 => string '3' //サンプル3 5'sample_txt' => string 'サンプル' //サンプルテキスト

コントローラー

php

1<?php 2 3use App; 4 5class SampleController { 6 7 /** 8 * 入力画面表示 9 */ 10 public function getIndex() 11 { 12 13 $login_data = Session::get('login_data'); 14 $input = Session::has('input') ? Session::get('input') : $login_data; 15 16 // view呼び出し 17 return $this->indexView($compact); // 実際の処理では$compact変数を作成し、使用 18 } 19 20 /** 21 * POST時に遷移してくる 22 */ 23 public function postConfirm() 24 { 25 $input = Input::all(); 26 // 入力値をSessionに保存する 27 Session::put('input', $input); 28 29 ///////////////////////////////////////////// 30 //////////// バリデートを行う //////////// 31 ///////////////////////////////////////////// 32 33 // バリデートエラーがあると 34 // 上記のgetIndexに戻り、ビューへ戻る 35 } 36}

ラジオボタンview

php

1{{-- 一部抜粋です --}} 2{{-- $sampleはオブジェクトです --}} 3@foreach($samples as $sample) 4 <label class="sample"> 5 {{ Form::checkbox( 6 'sample_check_box_arr[]', 7 $sample->value, 8 is_array($input->sample_check_box_arr) ? in_array($sample->value, $input->sample_check_box_arr) ? true : false : false, 9 [ 10 'id' => 'sample' . $sample->value, 11 ] 12 ) }} 13 {{-- 画面にサンプル15の文言を出します --}} 14 {{{ $trans_obj->trans($sample->name) }}} 15 </label> 16@endforeach 17コード

問題①
バリデートエラーをだし、画面にとどまった際、ラジオボタンがチェックされません。
$inputをセッションに入れる時にPOSTで送信した値と同じものが取得できてることは確認済みです。
検証でソースを確認しても、リロード時にはinputタグにchecked属性がついている以外の違いはなしです。

問題②
バリデートエラーをだし、画面にとどまった時はラジオボタンがチェックされていませんが、その状態でリロードすると、直前の選択がチェックされます。ですのでviewの書き方は悪くないと思っております。

問題③
is_array($input->sample_check_box_arr) ? in_array($sample->value, $input->sample_check_box_arr) ? true : false : false
のソースをvar_dumpをすると、バリデートエラーの直後、リロード時共に同じ値が取得できております。

質問
なぜ、バリデートエラーを出した直後の画面ではchekcedがつかないのでしょうか。全く分かりません。情報としては不十分かもしれませんが、心辺りがあれば教えてください。よろしくお願いします。

追記①

とりあえず解決しました。

本来のコード

php

1{{-- 一部抜粋です --}} 2{{-- $sampleはオブジェクトです --}} 3@foreach($samples as $sample) 4 <label class="sample"> 5 {{ Form::checkbox('sample_check_box_arr[]*' 6 . OriginalEncryptor::encrypt('tran_some_table' 7 . '*sample_check_box_arr' 8 . '*required|other_rule1|other_rule2,'), 9 $sample->value, 10 is_array($input->sample_check_box_arr) ? in_array($sample->value, $input->sample_check_box_arr) ? true : false : false, 11 [ 12 'id' => 'sample' . $sample->value, 13 ] 14 ) }} 15 {{-- 画面にサンプル15の文言を出します --}} 16 {{{ $trans_obj->trans($sample->name) }}} 17 </label> 18@endforeach

本来はシステム上、上記のようにバリデートルールなどを暗号化して、付与していました。
それを外すと事象は解決できました。(別の方法でバリデートをかける必要はありますが、、、。)

なぜなのだろう、、、、、。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問