【メッセージボードAPI】getMessages関数を追加するとエラーが発生してしまう | Unity Forum | Tech Stadium Forum

【メッセージボードAPI】getMes...
 
通知
すべてクリア

【メッセージボードAPI】getMessages関数を追加するとエラーが発生してしまう  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
10/01/2022 11:05 am  

メッセージボードAPIの作成にあたって、
messageboardssystemをmessageboardsapiにリネームコピーし
ブラウザ表示するところまでは問題なかったのですが、
MessageBoardsControllerにgetMessages関数を追加するとエラーが発生してしまいます。
本エラーの解決方法をご存知でしたらお教えいただけないでしょうか。


引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
10/01/2022 11:05 am  

最初に MessageBoards で試して見たのですが、同様のエラーが生じたため、プロパティに合わせる必要があるのかと思い Messageboard の綴りにしたところでした。

なお、今回サーバー学習の動画の通りに作成したMessageboardssystemをリネームコピーしただけのため、データベース名は変えておらず「MessageBoards」ではなく「Messageboard」のままとなっており、
コントローラー名も「MessageBoards」ではなく[Messageboard]となっています。


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
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

返信引用
共有:
タイトルとURLをコピーしました