CakePHP3で簡易的なECサイトを作っています。
セレクトボックスの値を取得する機能に関してまして、実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Cannot convert value of type `array` to integer
該当のソースコードはこちらになります。(コントローラー部分、ビュー部分)
・コントローラー部分
class ItemsController extends AppController { public function initialize() { parent::initialize(); $this->loadModel('Categories'); $this->loadModel('Users'); $this->loadModel('Budgets'); } public function search() { $budgets = $this->Budgets->find('all'); $categories = $this->Categories->find('all'); $users = $this->Users->find('all'); $this->set(compact('budgets')); $this->set(compact('categories')); $this->set(compact('users')); } public function result() { if($this->request->is('post')){ $name =$this->request->getData(['name']); $budget_id =$this->request->getData(['budget']); $category_id = $this->request->getData(['category']); $c_arr = array( 'or'=>array( array('Items.name like'=>'%'.$name.'%'), array('Items.detail like'=>'%'.$name.'%'), ) ); if(!empty($budget_id)){ $c_arr += array('Items.budget_id' => $budget_id); } $data = $this->Items->find('all') ->where($c_arr) ->contain(['Budgets']); // echo($data->sql()); var_dump($data); $this->set('items',$data); $this->set('name',$name); } }
・ビュー部分(search.ctp)
<div class="input-group" > <?= $this->Form->create(null,['url'=>['controller'=>'Items','action'=>'result']]); ?> <?= $this->Form->control('name',['type' => 'text','label' => false,'placeholder' => 'キーワードを検索','class' => 'form-control']); ?> <span class="input-group-btn"> <?= $this->Form->button(__('検索'),['type' => 'submit','class' => 'btn btn-default']); ?> </span> </div> <div class="panel-group"> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> <a data-toggle="collapse" href="#collapse3">値段</a> </h4> </div> <?php $s_budget = []; foreach ($budgets as $budget) { $s_budget += array($budget->id => $budget->budget); // print_r($s_budget); } // 価格の出し方 // $test = 29800; // echo number_format($test); ?> <div id="collapse3" class="panel-collapse collapse"> <ul class="list-group"> <li class="list-group-item"><?= $this->Form->select('budget',$s_budget, ['multiple' => 'checkbox','default' => '0','empty' => '指定なし']); ?> </li> </ul> </div> </div> </div> <?= $this->Form->end(); ?>
試したこと
セレクトボックスを使って検索をかけた場合のみ、上記のエラーが出力されます。
var_dumpをし、配列としてセレクトボックスの部分が以下のようにも出力されました。
':c2' => array (size=3) 'value' => array (size=1) ... 'type' => string 'integer' (length=7) 'placeholder' => string 'c2' (length=2)
よろしければ、どなたかご教授の程、よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。