Array to string conversion [CORE/src/View/Widget/CheckboxWidget.php, line 80]
このエラーメッセージが出たときの対処方法について、ウェブで情報が少なかったので書いておきますね。
まず、エラーの原因となったコードがこちら
1 2 3 4 5 6 7 |
<?php echo $this->Form->input('checkboxes[]', [ 'value' => '001', 'label' => FALSE, 'type' => 'checkbox', ]); ?> |
上記のコードでチェックボックスを書き出すことは問題なく出来るのですが、Submitして次の画面に遷移すると以下のようなエラーが発生してしまいました。
Notice (8): Array to string conversion [CORE/src/View/Widget/CheckboxWidget.php, line 80]
Notice のリンクをクリックしてエラーの詳細を見てみると、以下のようなメッセージが。
Notice (8): Array to string conversion [CORE/src/View/Widget/CheckboxWidget.php, line 80]
Code Context
Cake\View\Widget\CheckboxWidget::_isChecked() – CORE/src/View/Widget/CheckboxWidget.php, line 80
Cake\View\Widget\CheckboxWidget::render() – CORE/src/View/Widget/CheckboxWidget.php, line 51
Cake\View\Helper\FormHelper::widget() – CORE/src/View/Helper/FormHelper.php, line 2556
Cake\View\Helper\FormHelper::checkbox() – CORE/src/View/Helper/FormHelper.php, line 1409
Cake\View\Helper\FormHelper::_getInput() – CORE/src/View/Helper/FormHelper.php, line 1115
Cake\View\Helper\FormHelper::input() – CORE/src/View/Helper/FormHelper.php, line 1023
include – APP/Template/Layout/**************************
Cake\View\View::_evaluate() – CORE/src/View/View.php, line 992
Cake\View\View::_render() – CORE/src/View/View.php, line 952
Cake\View\View::renderLayout() – CORE/src/View/View.php, line 633
Cake\View\View::render() – CORE/src/View/View.php, line 592
Cake\Controller\Controller::render() – CORE/src/Controller/Controller.php, line 611
Cake\Routing\Dispatcher::_invoke() – CORE/src/Routing/Dispatcher.php, line 120
Cake\Routing\Dispatcher::dispatch() – CORE/src/Routing/Dispatcher.php, line 87
[main] – ROOT/webroot/index.php, line 37
このようなエラーが発生したとき、僕の今回のケースでは以下4行目のコードを追加することで対処が可能でした。
checkedオプションを追加すること。
1 2 3 4 5 6 7 8 |
<?php echo $this->Form->input('checkboxes[]', [ 'value' => '001', 'checked' => FALSE, 'label' => FALSE, 'type' => 'checkbox', ]); ?> |
この1行の設定が無かったことで、CakePHP3に怒られていたんですね。
ウェブに情報が載ってないってことは、昔からCakePHP使っている人にとっては発生することなんてありえない、すんごい初歩的なミスなのでしょうか。
ぼくの技術力不足がここで露呈するのはちょっと恥ずかしいですが、きっと誰かの役に立てるだろうと思って記事に残しておきます。
フレームワークの作法を覚えるのって大変。