共通パーツ(element)

「マイホーム」的なページにするために、members/indexを自IDでviewを見た状態に変更。


旧indexはlistview*1に変更、
自身のIDでviewを閲覧した時は、indexにredirect。


viewとindexのviewはほぼ一緒になるため「レイアウト」機能を使って共通化


app/controllers/members_controller.php

* $this->Model->readの第一引数は、特定の項目だけ取得したい場合は 例えば name とか入力。null=all。

	function index() {
		$this->set('member', $this->Member->read(null, $this->MemberAuth->user("id")));
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid Member.', true));
			$this->redirect(array('action'=>'listview'));
		}
		if ($id == $this->MemberAuth->user("id")) {
			$this->redirect(array('action'=>'index'));
		}
		$member = $this->Member->read(null, $id);
		if (!$member['Member']) {
			$this->Session->setFlash(__('Invalid Member.', true));
			$this->redirect(array('action'=>'listview'));
		}
		$this->set('member', $member);
	}

	function listview() {
		$this->Member->recursive = 0;
		$this->set('members', $this->paginate());
	}

app/views/members/index.ctp

<?php 
echo $this->renderElement('home',
		array(
			'member' => $member,
			'owner' => true,
		)
	);

view.ctpでは owner => false。

app/views/elements/home.thtmlに旧view.ctpを入れ、不要な箇所をけずったり、viewでは表示したくない箇所はifでくくったり。

*1:listにするとPHPのlist関数と競合する。非常に残念(笑)