PHP(CakePHP)でファイル転送システムを作っています。
システムの基本設定を変更することができる機能を実装中に以下のエラーメッセージが発生しました。
現在実習中で、自分の前にこのシステムを作っていたコードがこれらなのですが、
この人の書いたコードの意味が分からずどこからどう手をつけて直していけば良いのか分かりません。
ご教授よろしくお願いします。
発生している問題・エラーメッセージ
Notice (8): Undefined variable: set_data [APP/Controller\ConfigsController.php, line 57]
PHP
1*ConfigController.php 2### 該当のソースコード 3 /*==================================================== 4 * add 5 * --------------------------------------------------- 6 * 7 ====================================================*/ 8 public function add() 9 { 10 11 $session = $this->request->session(); 12 // ConfigsTableの構造を取得 13 $user = $this->Configs->newEntity(); 14 15 //確認ボタンが押されたとき 16 if ($this->request->is(['patch', 'post', 'put'])) { 17 18 dump($this->request->data); 19 20 //入力チェック 21 $set_data = $this->Configs->patchEntities($set_data,$this->request->getData()); 22 //var_dump($set_data); 23 //var_dump($result[0]); 24 if ($this->Configs->saveMany($set_data)) { 25 return $this->redirect(['action' => 'index']); 26 } 27 28 } 29 } 30 31
PHP
1*UplordsController.php 2 3 /*==================================================== 4 * initialize 5 ====================================================*/ 6 public function initialize() { 7 8 parent::initialize(); 9 10 //$user_info = $this->Auth->user(); 11 //$this->set('user_info',$user_info); 12 13 // ページタイトルの設定 14 $this->set('title', 'ファイルアップロード'); 15 16 //他のテーブルを参照する為に記述 17 $this->Configs = TableRegistry::get("configs"); 18 $this->domains = TableRegistry::getTableLocator()->get('domains'); 19 $this->Users = TableRegistry::getTableLocator()->get('users'); 20 $this->Downloads = TableRegistry::getTableLocator()->get('downloads'); 21 } 22 23 /*==================================================== 24 * beforeFilter 25 ====================================================*/ 26 public function beforeFilter(Event $event) { 27 28 parent::beforeFilter($event); 29 30 // ログインユーザー情報取得 31 // $user_info = $this->Auth->user(); 32 $user_info = array(); 33 $user_info['user_name'] = 'ログインユーザー'; 34 $user_info['user_kbn'] = 1; 35 $this->set('user_info',$user_info); 36 37 //Query オブジェクトを作成 38 $query = $this->Configs->find('all',[ 39 'keyField' => 'id', 40 'valueField' => 'expiration','download_count' 41 ]); 42 43 //配列に変換 44 $config_list = $query->toArray(); 45 46 //setする変数 47 $max = $config_list[0]->expiration;//上限有効期限 48 $max2 = $config_list[0]->download_count;//上限ダウンロード回数 49 $max_file_count = $config_list[0]->file_count;//上限ファイル数 50 51 /* 52 配列の[0]~[29]に1~30の値が入っている。取得したい値マイナス1した数を配列[]内に指定すると取得できる。 53 この辺りの記述はテンプレートで書いてもOK。さほど重要な処理ではないのでテンプレートにあった方が読みやすくなる。 54 */ 55 $config_expiration = -1 + $config_list[1]->expiration;//デフォルト有効期限 56 $config_download_count = -1 + $config_list[1]->download_count;//デフォルトダウンロード回数 57 58 //var_dump('コントローラーの$max_file_count',$max_file_count); 59 60 //1~有効期限上限値までを配列にする 61 for($i = 0; $i < $max; $i++){ 62 $expiration_list[$i] = $i + 1; 63 } 64 //echo $expiration_list; 65 66 //1~ダウンロード回数上限値までを配列にする 67 for($s = 0; $s < $max2; $s++){ 68 $download_count_list[$s] = $s + 1; 69 } 70 71 //setメソッドでViewにデータを渡す(cakephp3のコントローラーの機能) 72 $this->set('expiration_list',$expiration_list); 73 $this->set('download_count_list',$download_count_list); 74 $this->set('config_expiration',$config_expiration); 75 $this->set('config_download_count',$config_download_count); 76 $this->set('max_file_count',$max_file_count); 77 78 } 79 80
PHP
1*add.ctp 2<?php 3/** 4 * @var \App\View\AppView $this 5 * @var \App\Model\Entity\Config $config 6 */ 7 8 //ConfigsControllerでconfigsテーブルの中身全てを配列に変換 9 //それぞれ欲しい部分だけを変数に代入し直す。 10 //[0]がシステム上限値、[1]がユーザーデフォルト値を指す。 11 // ex, expiration[0] ... 有効期限のシステム上限値 12 $expiration = array_column( $result, 'expiration' ); 13 $file_count = array_column( $result, 'file_count' ); 14 $download_count = array_column( $result, 'download_count' ); 15 $file_size = array_column( $result, 'file_size' ); 16 //cakePHP defaultのテンプレートを無効化する 17 // $this->Form->templates([ 18 // 'inputContainer' => '{{content}}', 19 // 'inputContainerError' => '{{content}}{{error}}', 20 //]); 21 22?> 23 24<div class="row"> 25 <div class="col-md-12"> 26 <div class="box box-info"> 27 <div class="box-header with-border"> 28 <h3 class="box-title">システム基本設定</h3> 29 </div> 30 <?= $this->Form->create('Configs',['class'=>'form-inline']) ?> 31 <fieldset> 32 <div class="box-body"> 33 <div class="row"> 34 <div class="col-lg-6"> 35 <div class="input-group"> 36 <?php 37 echo $this->Form->control('configs[1][expiration]',['label'=>'ダウンロードの有効期限:デフォルト ','value'=>"$expiration[1]"]); 38 ?> 日間 39 </div> 40 </div> 41 <div class="col-lg-6"> 42 <div class="input-group"> 43 <?php 44 echo $this->Form->control('configs[2][expiration]',['label' => 'システム上限値 ','value'=>"$expiration[0]"]); 45 ?> 日間 46 </div> 47 </div> 48 </div> 49 <div class="row"> 50 <div class="col-lg-6"> 51 <div class="input-group"> 52 <?php 53 echo $this->Form->control('configs[1][file_count]',['label'=>' ファイル数 :デフォルト ','value'=>"$file_count[1]"]); 54 ?> ファイルまで 55 </div> 56 </div> 57 <div class="col-lg-6"> 58 <div class="input-group"> 59 <?php 60 echo $this->Form->control('configs[2][file_count]',['label' => 'システム上限値 ','value'=>"$file_count[0]"]); 61 ?> ファイルまで 62 </div> 63 </div> 64 </div> 65 <div class="row"> 66 <div class="col-lg-6"> 67 <div class="input-group"> 68 <?php 69 echo $this->Form->control('configs[1][download_count]',['label'=>' ダウンロード回数 :デフォルト ','value'=>"$download_count[1]"]); 70 ?> 回まで 71 </div> 72 </div> 73 <div class="col-lg-6"> 74 <div class="input-group"> 75 <?php 76 echo $this->Form->control('configs[2][download_count]',['label' => 'システム上限値 ','value'=>"$download_count[0]"]); 77 ?> 回まで 78 </div> 79 </div> 80 </div> 81 <div class="row"> 82 <div class="col-lg-6"> 83 <div class="input-group"> 84 <?php 85 echo $this->Form->control('configs[1][file_size]',['label'=>' 合計ファイルサイズ :デフォルト ','value'=>"$file_size[1]"]); 86 ?> GBまで 87 </div> 88 </div> 89 <div class="col-lg-6"> 90 <div class="input-group"> 91 <?php 92 echo $this->Form->control('configs[2][file_size]',['label' => 'システム上限値 ','value'=>"$file_size[0]"]); 93 ?> GBまで 94 </div> 95 </div> 96 </div> 97 </div>* 98 </fieldset> 99 <?php 100 echo $this->Form->input('configs[1][id]', [ "type" => "hidden", 101 "value" => "1" ] ); 102 ?> 103 <?php 104 echo $this->Form->input('configs[2][id]', [ "type" => "hidden", 105 "value" => "2" ] ); 106 ?> 107 <?php 108 echo $this-> Form-> submit ( "戻る",['class'=>'btn btn-info pull-right', 109 'style'=>'margin-right: 80px;']); 110 ?> 111 <?php 112 echo $this-> Form-> submit ( "確 認",['class'=>'btn btn-info pull-right','style'=>'margin-right: 10px' 113 ]); 114 ?> 115 <?= $this->Form->end() ?> 116 </div>
試したこと
$set_dataに入るのは入力チェックによる結果だと思ったので$set_data2を作って実際に入力された値たちはそこに入れて渡してみたら解決するかなと思い試してみましたが、出てきたエラーの内容は同じでした。
補足情報(FW/ツールのバージョンなど)
実はこれまではjavaのみやってきましたがいきなりphpに切り替わって、基本は調べつつ解決していっていますがあまり人に聞ける環境でもないのでとても困っています。
どうか助けてください。
回答2件
あなたの回答
tips
プレビュー