通知
すべてクリア
10/01/2022 11:05 am
メッセージボードAPIの作成にあたって、
messageboardssystemをmessageboardsapiにリネームコピーし
ブラウザ表示するところまでは問題なかったのですが、
MessageBoardsControllerにgetMessages関数を追加するとエラーが発生してしまいます。
本エラーの解決方法をご存知でしたらお教えいただけないでしょうか。
10/01/2022 11:05 am
最初に MessageBoards で試して見たのですが、同様のエラーが生じたため、プロパティに合わせる必要があるのかと思い Messageboard の綴りにしたところでした。
なお、今回サーバー学習の動画の通りに作成したMessageboardssystemをリネームコピーしただけのため、データベース名は変えておらず「MessageBoards」ではなく「Messageboard」のままとなっており、
コントローラー名も「MessageBoards」ではなく[Messageboard]となっています。
10/01/2022 11:06 am
MassageBoards の綴りでコントローラーから作り直し、
124行目の綴りをデータベースに合わせたら表示できました。
ありがとうございました。
<?php
namespace App\Controller;
use App\Controller\AppController;
/**
* Messageboards Controller
*
* @property \App\Model\Table\MessageboardsTable $Messageboards
*
* @method \App\Model\Entity\Messageboard[]|\Cake\Datasource\ResultSetInterface paginate($object = null, array $settings = [])
*/
class MessageboardsController extends AppController
{
/**
* Index method
*
* @return \Cake\Http\Response|void
*/
public function index()
{
$messageboards = $this->paginate($this->Messageboards);
$this->set(compact('messageboards'));
}
/**
* View method
*
* @param string|null $id Messageboard id.
* @return \Cake\Http\Response|void
* @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
*/
public function view($id = null)
{
$messageboard = $this->Messageboards->get($id, [
'contain' => []
]);
$this->set('messageboard', $messageboard);
}
/**
* Add method
*
* @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
*/
public function add()
{
$messageboard = $this->Messageboards->newEntity();
if ($this->request->is('post')) {
$messageboard = $this->Messageboards->patchEntity($messageboard, $this->request->getData());
if ($this->Messageboards->save($messageboard)) {
$this->Flash->success(__('The messageboard has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('The messageboard could not be saved. Please, try again.'));
}
$this->set(compact('messageboard'));
}
/**
* Edit method
*
* @param string|null $id Messageboard id.
* @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
* @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
*/
public function edit($id = null)
{
$messageboard = $this->Messageboards->get($id, [
'contain' => []
]);
if ($this->request->is(['patch', 'post', 'put'])) {
$messageboard = $this->Messageboards->patchEntity($messageboard, $this->request->getData());
if ($this->Messageboards->save($messageboard)) {
$this->Flash->success(__('The messageboard has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('The messageboard could not be saved. Please, try again.'));
}
$this->set(compact('messageboard'));
}
/**
* Delete method
*
* @param string|null $id Messageboard id.
* @return \Cake\Http\Response|null Redirects to index.
* @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
*/
public function delete($id = null)
{
$this->request->allowMethod(['post', 'delete']);
$messageboard = $this->Messageboards->get($id);
if ($this->Messageboards->delete($messageboard)) {
$this->Flash->success(__('The messageboard has been deleted.'));
} else {
$this->Flash->error(__('The messageboard could not be deleted. Please, try again.'));
}
return $this->redirect(['action' => 'index']);
}
public function getMessages(){
error_log("getMessagess()");
//---------------
// Viewのレンダーを無効化
// これを行う事で対になるテンプレート(.tpl)が不要となる。
$this->autoRender = false;
//---------------
// POSTデータの受け取り方
// API呼び出しでPOSTパラメータが指定された場合は $this->request->data[] に入ってくる。
// 下記例では id というパラメータが取得されたことを想定している。
//$id = $this->request->data['id'];
//---------------
// DBからデータを読み込んで配列に変換
//[MessageBoards]テーブルからクエリを取得
$query = $this->MessageBoards->find('all');
//※ここでクエリを利用してデータの並べ替えなどが行える。
// debug($query); //現在のクエリの状態をデバッグ表示する
// $query->where(['id' => 1]); //カラム['id']に[1]が入っているもののみに絞る。
// $query->order(['id' => 'ASC']); //カラム['id']をキーにして昇順ソート
// $query->order(['id' => 'DESC']); //カラム['id']をキーにして降順ソート
// $query->limit(3); //表示個数を3つに絞る
//クエリを実行してarrayにデータを格納
$json_array = json_encode($query);
//---------------
// $json_array の内容を出力
echo $json_array;
}
}
This post was modified 3年前 by Student