[Cakephp4] 検索フォーム

こんにちわ、masumasuです。

柔らかな春風に花の香りが漂う頃となりました。 皆様はいかがお過ごしでしょうか。

今回は、モデルを使わないフォームについて書いていきます。

通常のFormであれば、Modelと紐づいている必要がありますが、Modelを使用したくない機能を実装するために使われています。

主に、検索フォームで使われることが多いです。

例としては、下記のように記述します。

<?php
namespace App\Form;

use Cake\Form\Form;
use Cake\Form\Schema;
use Cake\Validation\Validator;

class UserSearchForm extends Form
{
    /**
     * スキーマを生成
     *
     * @param \Cake\Form\Schema $schema The schema to customize.
     * @return \Cake\Form\Schema The schema to use.
     */
    protected function _buildSchema(Schema $schema): Schema
    {
        return $schema;
    }

    /**
     * バリデーション
     *
     * @param \Cake\Validation\Validator $validator バリデータ
     * @return \Cake\Validation\Validator
     */
    public function validationDefault(Validator $validator): Validator
    {
    }

    /**
     * 実行
     *
     * @param array $data データ
     * @return bool
     */
    protected function _execute(array $data): bool
    {
        return true;
    }
}

Controllerに下記のように記述します。

$userSearchForm = new UserSearchForm();
if($articleSearchForm->execute($this->getRequest()->getQuery())){
    // 正常
}else{
    // バリデーションエラー
}
$this->set(compact('userSearchForm'));

まとめ

モデルを使わないにフォームについて書きました。

ご覧いただきありがとうございました。