初めてのCakephp★ページの表示★処理の流れ

CakePHPの環境構築を初めから丁寧に☆ローカル環境でサンプルを表示☆Apache+PHP+SQL☆

これの続きです。

前回、Cakephpサンプル表示できたと思います。

その、Cakephpファイルを用いて、簡単なページを表示させましょう。

 

まず、おさらいとしてCakephpはMVCモデルを採用しています。

Modelはデータを扱う部分でcake/app/Modelにファイルを置き、拡張子は.php。Viewは見た目(ユーザーインターフェース)を扱う部分でcake/app/Viewにファイルを置き拡張子は.ctp。ControllerはModelとViewを制御する部分cake/app/Controllerにファイルを置き拡張子は.php。

※cakeはcakephpをダウンロードしたファイル名。それに応じて名前を変更する。

 

それでは、ページを作っていきましょう。

まず、/cake/app/Controller/ExamplesController.php

<?php
App::uses('AppController', 'Controller');

class ExamplesController extends AppController {

  public function index() {
    $this->set("title_for_layout","はじめてのCakePHP");
    $this->set("message","こんにちは!");
  }
}

上のソースファイルを作りましょう。この、indexというのが重要です。この関数の処理を終えた後同名のView
のindex.ctpに処理が引き継がれ、自動的に表示されます。関数名とViewファイルはファイル名で対応しています

なので、ある関数名???をつけると、それに対応する???.ctpを作ります。title_for_layoutはデフォルトでページタイトル変数でブラウザのタイトルバーに出る文字を指定できます。$this->set(Viewでの変数名,中身);でViewにデータを送ることができます。

次は// Examples/index.ctpに

<?php 
echo $message;
?>
のソースファイルを作りましょう。
コントロールで作成したmessageという変数に入れた文字を表示させます。
それでは、作成したページを閲覧します。

http://localhost:8888/cake/examples/index/
作成したファイルはこのURLで表示させることができます。
各々の環境に合わせて変更してください。

ここで注意ですが、スタイルなどは特に指定していないのにCakephpのデフォルトデザインでヘッダーと
とフッターが表示されているはずです。

このデフォルトデザインを消すにはapp/Controller/SamplesController.phpでコントローラーから消すことができます。

<?php
App::uses('AppController', 'Controller');

class SamplesController extends AppController {
  public function index() {
    $this->autoLayout = false;  // レイアウトをOFFにする
    $this->set("sampleText","サンプルページです。");
  }
}

を作って、保存してください。

ヘッダー・フッターがなくなりCSSもなしになったはずです。
$this->autoLayout = false;で、オフにしています。
レイアウトの変更はController直下(全体)に指定する場合は
public $layout = 'sampleLayout';
index()などAction内で指定する場合は
$this->layout = 'sampleLayout';で指定できます。
このように新しくレイアウトフォルダを作る場合はレイアウトフォルダcake/app/View/Layouts/

に作成しましょう。デフォルトレイアウトフォルダはdefault.ctpになっているはずです。自作レイアウト(今回の場合は(sampleLayout)cake/app/View/Layouts/sampleLayout.ctpに保存します。

 

見てわかる通り、View内にレイアウトフォルダを作ります。

それでは、具体的に作っていきましょう。

index()などAction内で指定する場合の方法で
cake/app/View/Layouts/sampleLayout.ctpに
<!DOCTYPE html>
<html lang="ja">
<head>
<?php echo $this->Html->charset(); ?>
<meta name="copyright" content="&copy; atomicbox">
<title><?php echo $title_for_layout; ?></title>
<?php echo $this->Html->meta('icon');?>
<?php echo $this->fetch('meta');?>
<?php echo $this->Html->css('base-style.css'); ?>
<?php echo $this->fetch('css');?>
<?php echo $this->fetch('script');?>
</head>
<body>
<div id="contents">
	<h1>atomicbox</h1>
	<?php echo $this->fetch('content'); ?>
</div>
<p id="copyright">&copy; 2014 atomicbox</p>
</div>
</body>
</html>
を作ります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です