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

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

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

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

解決済

CakePHPで作成したアプリケーションを表示したページの上部表示されたエラーの原因がわかりません

haksen
haksen

総合スコア17

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

1回答

0評価

0クリップ

180閲覧

投稿2022/04/05 14:09

編集2022/05/21 11:40

CakePHPで作成したアプリケーションで表示したページの上部に
以下のようなエラーが表示されているのですが、原因がわからず困っています。

Notice (1024): Undefined property: PurchaseOrdersController::$PurchaseOrders in C:\xampp\htdocs\test\src\Controller\PurchaseOrdersController.php on line 21 [CORE\src\Controller\Controller.php, line 329]

環境
PHP 8.1.2
CakePHP 4.3.7
mySQL 8.0.28
Apache/2.4.52 (Win64)

手順
1)mysqlでテーブル定義
テーブル:purchase_order
テスト用に1件データを作成
2)CakePHP/bakeでスケルトン作成
bin\cake bake all purchase_orders
3)ブラウザで該当ページを表示

indexとして表示するレコードの一覧は正しく表示されているので
スケルトンの内容に問題無いように思います。

なぜエラーとして表示されているのか、
どうすれば解消できるのか教えていただけませんか。

試したこと
同じ構造を持つテーブル(orders)を作成して同様にスケルトンを作成したのですが
こちらはエラーは表示されませんでした。

イメージ説明

PHP

コード <?php declare(strict_types=1); namespace App\Controller; /** * PurchaseOrders Controller * * @property \App\Model\Table\PurchaseOrdersTable $PurchaseOrders * @method \App\Model\Entity\PurchaseOrder[]|\Cake\Datasource\ResultSetInterface paginate($object = null, array $settings = []) */ class PurchaseOrdersController extends AppController { /** * Index method * * @return \Cake\Http\Response|null|void Renders view */ public function index() { $purchaseOrders = $this->paginate($this->PurchaseOrders); $this->set(compact('purchaseOrders')); } /** * View method * * @param string|null $id Purchase Order id. * @return \Cake\Http\Response|null|void Renders view * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function view($id = null) { $purchaseOrder = $this->PurchaseOrders->get($id, [ 'contain' => [], ]); $this->set(compact('purchaseOrder')); } /** * Add method * * @return \Cake\Http\Response|null|void Redirects on successful add, renders view otherwise. */ public function add() { $purchaseOrder = $this->PurchaseOrders->newEmptyEntity(); if ($this->request->is('post')) { $purchaseOrder = $this->PurchaseOrders->patchEntity($purchaseOrder, $this->request->getData()); if ($this->PurchaseOrders->save($purchaseOrder)) { $this->Flash->success(__('The purchase order has been saved.')); return $this->redirect(['action' => 'index']); } $this->Flash->error(__('The purchase order could not be saved. Please, try again.')); } $this->set(compact('purchaseOrder')); } /** * Edit method * * @param string|null $id Purchase Order id. * @return \Cake\Http\Response|null|void Redirects on successful edit, renders view otherwise. * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function edit($id = null) { $purchaseOrder = $this->PurchaseOrders->get($id, [ 'contain' => [], ]); if ($this->request->is(['patch', 'post', 'put'])) { $purchaseOrder = $this->PurchaseOrders->patchEntity($purchaseOrder, $this->request->getData()); if ($this->PurchaseOrders->save($purchaseOrder)) { $this->Flash->success(__('The purchase order has been saved.')); return $this->redirect(['action' => 'index']); } $this->Flash->error(__('The purchase order could not be saved. Please, try again.')); } $this->set(compact('purchaseOrder')); } /** * Delete method * * @param string|null $id Purchase Order id. * @return \Cake\Http\Response|null|void Redirects to index. * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function delete($id = null) { $this->request->allowMethod(['post', 'delete']); $purchaseOrder = $this->PurchaseOrders->get($id); if ($this->PurchaseOrders->delete($purchaseOrder)) { $this->Flash->success(__('The purchase order has been deleted.')); } else { $this->Flash->error(__('The purchase order could not be deleted. Please, try again.')); } return $this->redirect(['action' => 'index']); } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

gU8C8Nud4E8p3uW

2022/04/05 14:11

エラーメッセージにある21行目付近のコードを、10行くらい前から質問文に追記していただくことはできますか?
haksen

2022/04/11 08:33

PurchaseOrdersControllerのソースPurchaseOrdersController.phpを追記しましたindex()メソッドのあたりになります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。