ChatGPTのプロンプト集。
231 views
あなたはプログラマーです。次に指示するプログラムを作成してください。
CakePHP4を使用する。
CakePHP4のインストールとDBの設定は完了済みの前提で説明すること。
ただし、modelクラスやentityクラスは作成していないため、必要に応じて作成すること。
CakePHP4のコードは、クリーンアーキテクチャに基いて実装すること。
ビューからコントローラーへの入力フォームはCakePHP4で定義されている"モデルの無いフォーム"を使用すること。
ユースケースは、CakePHP4で提供されているサービスクラス(依存性の注入)で実現すること。
サービスに関しては以下のURLを参考にすること。
依存性の注入 (DI)
クリーンアーキテクチャのデータアクセスはCakePHP4のモデルクラスを使用すること。
クリーンアーキテクチャのエンティティはCakePHP4のエンティティクラスを使用すること。
コントローラーからViewに渡すためのデータはViewModelを作成して渡すこと。
ViewはBootstrap5を使用して実装すること。
用語 | 説明 |
---|---|
部分一致 | 検索キーワードを含む文字列を検索すること。 |
完全一致 | 検索キーワードと一致する文字列を検索すること。 |
samplesテーブルが定義されている。
項目名 | 型 | 説明 |
---|---|---|
id | INT | 主キー |
name | varchar(255) | 名前を入力する |
update_at | DATETIME型 | データが更新された時間を入力する |
create_at | DATETIME型 | データが追加された時間を入力する |
samplesテーブルに対して、次の操作を行えるようにしたい。
各操作について説明する。
表示と検索の詳細について説明する。
[URL]
samples/index
Viewのテンプレートを以下に示す。
[templates/samples/index.php]
検索ボックスはモデルの無いフォームを使用して検索できること。
<?php
/**
* @var \App\View\AppView $this
* @var iterable<\App\Model\Entity\Sample> $samples
* @var \App\Form\SearchForm $searchForm
*/
?>
<div class="samples index content">
<?= $this->Html->link(__('新規追加'), ['action' => 'add'], ['class' => 'btn btn-primary float-end']) ?>
<h3><?= __('Samplesテーブル') ?></h3>
<!-- 検索ボックスの追加 -->
<div class="search-box mb-3">
<?= $this->Form->create($searchForm, ['type' => 'get', 'class' => 'd-flex']) ?>
<?= $this->Form->control('search', [
'label' => false,
'value' => $search,
'class' => 'form-control me-2',
'placeholder' => '名前で検索'
]) ?>
<?= $this->Form->button(__('検索'), ['class' => 'btn btn-primary']) ?>
<?= $this->Form->end() ?>
</div>
<div class="table-responsive">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th><?= $this->Paginator->sort('id') ?></th>
<th><?= $this->Paginator->sort('name', '名前') ?></th>
<th><?= $this->Paginator->sort('create_at', '作成日') ?></th>
<th><?= $this->Paginator->sort('update_at', '更新日') ?></th>
<th class="actions"><?= __('操作') ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($samples as $sample): ?>
<tr>
<td><?= $this->Number->format($sample->id) ?></td>
<td><?= h($sample->name) ?></td>
<td><?= h($sample->create_at) ?></td>
<td><?= h($sample->update_at) ?></td>
<td class="actions">
<?= $this->Html->link(__('詳細'), ['action' => 'view', $sample->id], ['class' => 'btn btn-primary btn-sm']) ?>
<?= $this->Html->link(__('編集'), ['action' => 'edit', $sample->id], ['class' => 'btn btn-secondary btn-sm']) ?>
<?= $this->Form->postLink(__('削除'), ['action' => 'delete', $sample->id], ['confirm' => __('Are you sure you want to delete # {0}?', $sample->id), 'class' => 'btn btn-danger btn-sm']) ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<div class="paginator">
<ul class="pagination justify-content-center">
<?= $this->Paginator->first('<< ' . __('first'), ['class' => 'page-item']) ?>
<?= $this->Paginator->prev('< ' . __('previous'), ['class' => 'page-item']) ?>
<?= $this->Paginator->numbers(['class' => 'page-item']) ?>
<?= $this->Paginator->next(__('next') . ' >', ['class' => 'page-item']) ?>
<?= $this->Paginator->last(__('last') . ' >>', ['class' => 'page-item']) ?>
</ul>
<p><?= $this->Paginator->counter(__('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')) ?></p>
</div>
</div>
samplesテーブルの次のデータを表形式で表示する。
・id
・name
idの表示テーブルの列名は"id"と表示する。
nameの表示テーブルの列名は"名前"と表示する。
初期表示では、idの降順に表示する。
1ページあたりの表示上限数は10件としたページネーションを行う。
表示テーブルの上段には検索ボックスを設け、次の検索ができる。
ユーザーは、次のフォームに名前を入力することで、該当するレコードを検索できる。
ラベル名:名前
入力:テキストボックス
入力された文字列がnameに含まれているものを検索する。
ページ送りが行われた場合、検索条件は引き継ぐ。
表示画面には新規追加ボタンがあり、クリックすると新規追加画面に遷移する。
URL:samples/add
ユーザーは"名前"のフォームに入力した名前を新規に追加できる。
samplesテーブルのnameに入力された名前を保存する。
新規追加した時刻をcreateatとupdateatに保存する。
戻るボタンを押した場合、前の表示画面に戻る。
URL:samples/edit
ユーザーは"名前"のフォームに入力した名前をを編集できる。
samplesテーブルのnameの文字列を入力された名前で更新する。
新規追加した時刻でupdate_atを更新する。
編集は、表示画面から"編集ボタン"から遷移する。
戻るボタンを押した場合、前の表示画面に戻る。
URL:samples/delete
samplesテーブルから指定したレコードを1件削除する。
削除は、表示画面の"削除ボタン"から削除できる。
削除する前に"削除しますか?"のメッセージをダイアログに表示し、OKボタンが押された場合に削除する。
検索、表示、追加、編集、削除で日本語が扱えるようにすること。
上記の内容を踏まえてソースコードを作成してください。
回答は作成するファイル名ごとに、次の形式で回答してください。
それ以外は回答しないでください。見出しやまとめは不要です。
マークダウンで記述しないでください。
[@ファイル名@]
src/Controller/SamplesController.php
[@ソースコード@]
<?php
echo "Hello";
Page 1 of 1.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/