0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CakePHPブログチュートリアル 検索機能追加

Last updated at Posted at 2020-04-15

cakephpのブログチュートリアルに機能を追加していきます。

#事前準備

前ユーザがログアウト出来るようにする。

以下のコードを追加。

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('logout');
}

Post/addで記事を作成した際にidが自動で付与されるようにした。

PostsController.phpにて

$user_id = $this->Session->read('Auth.User.id'); //セッションコンポーネントでログインしているユーザーのidを取得。
$this->set(compact('user_id')); //add.ctpにid情報を送る

add.ctpにて
送られてきたidを受け取る

echo $this->Form->hidden('user_id',['value'=>$user_id]);

#タイトル検索機能を追加

Postのindex.ctpに検索バーを作る

<?php echo $this->Form->create('Post'); ?>
<?php echo $this->Form->input('search')?>
<?php echo $this->Form->submit()?>
<?php echo $this->Form->end() ?>

viewで受け取った入力をコントローラーに渡す&DB値をとってくる

$tmp = $this->request->data['Post']['search'];でviewの検索バーで入力したものを受け取る。
$posts = $this->Paginator->paginate array('title LIKE' => "%${tmp}%"));
LIKEオプションで部分一致したものをとってくる。paginateはあまり理解していないので後ほどまとめる

TODO:Paginateを学ぶ

public function index() {
		$posts=array();
		if($this->request->is('post')) {
			$tmp = $this->request->data['Post']['search'];
				$posts = $this->Paginator->paginate(
				array('title LIKE' => "%${tmp}%")
			);
			

		}else{
			$this->Post->recursive = 0;
			$posts = $this->Paginator->paginate();
		}
		$this->set('posts',$posts);
}

検索パターンを増やす

ラジオボタンを作る

ラジオボタンを横並びにする

  • inline-flexを用いて並べた。
  • オプションは連想配列で設定する
$options = array('options' => array('before_match' => '前方一致', 'after_match' => '後方一致','part_match' => '部分一致', 'comp_match' => '完全一致'),
	'before'=>'<div>','after' => '</div>','separator' => '</div><div>','div' => array('style'=>'display:inline-flex'),'type' => 'radio',
);

FormHelperのdivやlavel、クラス名などについて

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?