モデルに関する画面のHTML自動生成

一覧画面、詳細画面、編集画面のHTMLの自動生成ができます。

一覧表

モデルで取得したレコードセットを一覧にしたHTMLを生成します。レコードセットということでCZModelRecordsクラスから取得します。

CZModelRecords::getListHtml()
レコード一覧HTMLを取得します。インスタンスに絞り込みやページングが設定されている場合、その結果を返します。

以下のように使用します。

コントローラ

<?
class ctrlXxx extends CZCtrl {

	public function listIndex() {
		// モデルインスタンスの生成
		$model = $this->newModel('item');
		// 検索やページングによる表示レコードの絞り込み
		$model->_addRecords()->...
		// 表示するレコード一覧HTMLの取得
		$html = $model->_getRecords()->getListHtml();
		// ビュー変数に設定
		$this->addViewVar('html', $html);
	}

}
?>

ビュー

<p>アイテムの一覧です。</p>
<?= $html ?>

表示内容

表示するカラムは

$this->_addRecords()->setCaptions($captions)

$this->_addRecords()->setColumnNames($names)

で指定します。

表示に関する設定

一覧表には各レコードの値に加えて詳細画面へのリンク、編集画面へのリンク、削除ボタンを表示できます。詳細画面へのリンク、編集画面へのリンク、削除ボタンの表示形式は設定ファイル{(app_root), _common}/configs/Model.phplink_to_detail_strlink_to_update_strlink_to_delete_strで設定できます。

<?
class configModel extends CZConfig {

	public function _construct() {
		$this->setValues(array(
			'link_to_detail_str' => 'Detail',
			'link_to_update_str' => 'Update',
			'link_to_delete_str' => 'Delete',
		));
	}

}
?>

各(レコード操作)画面へのリンクを$lt;a>タグでlink_to_detail_strlink_to_update_strlink_to_delete_strで指定した文字列を囲んで表示します。 詳細はモデルの設定も参照してください。

一覧表の表示形式は設定ファイル{(app_root), _common}/configs/Html.phpで設定できます。

<?
class configHtml extends CZConfig {
	public function _construct() {
		$this->setValues(array(
				:
			'list' => array(
				'html_type'   => 'table',
				'tag_options' => array(
					'table' => 'border="1" width="100%"',
					'tr'    => '',
					'th'    => '',
					'td'    => '',
				),
				'caption_head_str' => '',
				'caption_tail_str' => '',
			),
				:
		));
	}
}
?>

tag_typeslistで表示形式を指定します。詳細は自動生成するHTMLに関する情報の設定も参照してください。

詳細画面

モデルで取得したレコードのHTMLを生成します。CZModelクラスから取得します。

CZModel::getDetailHtml(int $id, $escape_flag = TRUE, array $ignore_escape_keys = NULL, $format_flag = TRUE)
指定したIDのレコードの詳細表示HTMLを取得します。$escape_tags_flagがTRUEもしくは指定しない場合、$value中に含まれるHTMLタグ要素はエスケープ処理して表示可能な文字列に置換します。FALSEの場合タグ要素をそのままタグとして代入します。$ignore_escape_keysでエスケープ対象から除外するキーを指定することもできます。エスケープに関する指定の詳細はこちらも参照してください。

コントローラ

<?
class ctrlXxx extends CZCtrl {

	public function detailIndex($id) {
		$html = $this->newModel('item')->getDetailHtml($id);
		$this->addViewVar('html', $html);
	}

}
?>

ビュー

<p>アイテムの詳細です。</p>
<?= $html ?>

表示内容

表示するカラムはCZModel::setDetailCaptions(array $captions)で指定します(実行しない場合は全カラムを表示します)。

表示に関する設定

詳細の表示形式は設定ファイル{(app_root), _common}/configs/Html.phpで設定できます。

<?
class configHtml extends CZConfig {
	public function _construct() {
		$this->setValues(array(
				:
			'detail' => array(
				'html_type'   => 'table',
				'tag_options' => array(
					'table' => 'border="1" width="700"',
					'tr'    => '',
					'th'    => 'width="30%"',
					'td'    => 'width="70%"',
				),
				'caption_head_str' => '*',
				'caption_tail_str' => '',
			),
		));
	}
}
?>

tag_typesdetailで表示形式を指定します。詳細は自動生成するHTMLに関する情報の設定も参照してください。

編集画面(フォーム)

レコードの更新処理をする場合、更新フォームにモデルから取得した古いレコードの値を挿入して表示します。

コントローラ

<?
class ctrlXxx extends CZCtrl {

	public function updateIndex() {
		if (!($values = $this->newModel('m_service')->beginUpdate($service_id))) {
			$this->forward404();
		}
		$this->newForm('service_edit')->initValues($values);
		$this->addViewVar('html', $this->newForm('service_edit')->getFormHtml(), FALSE);
	}

}
?>

ビュー

<p>編集する内容を入力してください。</p>
<form action="<?= $this->_url('confirm', 'update') ?>" method="post">
	<?= $html ?>
	<input type="submit" value="登録する" />
</form>
<a href="<?= $_return_url ?>">戻る</a>

前後のページ

ページトップへ