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',
);