<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HASの庭 &#187; CakePHP</title>
	<atom:link href="http://has.s321.xrea.com/category/memo/cakephp/feed/" rel="self" type="application/rss+xml" />
	<link>http://has.s321.xrea.com</link>
	<description>発酵to熟成の道</description>
	<lastBuildDate>Sun, 12 Nov 2023 15:30:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CakePHP ブログチュートリアル</title>
		<link>http://has.s321.xrea.com/memo/cakephp/875/</link>
		<comments>http://has.s321.xrea.com/memo/cakephp/875/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 09:17:48 +0000</pubDate>
		<dc:creator>HAS</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://has.s321.xrea.com/?p=875</guid>
		<description><![CDATA[
今更ですが、CakePHPの公式ブログチュートリアルをやってみました！
環境及びバージョン
・CentOS: 5.4
・CakePHP: 1.3.3
・MySQL: 5.0.77
ダウンロード

1
2
3
4
5
6
cd /tmp/
wget http://github.com/cakephp/cakephp/tarball/1.3.3
tar xvzf cakephp-cakephp-1.3.3-0-gf01b4ae.tar.gz -C /var/www/www.yourdomain.jp/
cd /var/www/www.yourdomain.jp
mv cakephp-cakephp-efb6e08 cakephp133
rm /tmp/cakephp-cakephp-1.3.3-0-gf01b4ae.tar.gz

Apacheの設定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cd /etc/httpd/conf.d/
&#160;
vi ○○.conf
&#60;VirtualHost xxx.xxx.xxx.xxx:80&#62;
  ServerName www.yourdomain.jp:80
  DocumentRoot /var/www/www.yourdomain.jp/cakephp133
  ServerAdmin webmaster@yourdomain.jp
  ErrorLog logs/error_log-www.yourdomain.jp
  CustomLog logs/access_log-www.yourdomain.jp combined env=!no_log
&#60;/VirtualHost&#62;
&#60;Directory /var/www/www.yourdomain.jp/cakephp133&#62;
  AllowOverride All
  Options -MultiViews
  Order allow,deny
  Allow from all
&#60;/Directory&#62;
&#160;
service httpd configtest
service httpd restart

データベースの作成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE DATABASE blog_test;
GRANT ALL  [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://has.s321.xrea.com/wp-content/uploads/2009/12/line_01.gif" alt="line" title="line" width="450" height="1" class="aligncenter size-full wp-image-383" /></p>
<p>今更ですが、CakePHPの公式ブログチュートリアルをやってみました！</p>
<p><strong>環境及びバージョン</strong><br />
・CentOS: 5.4<br />
・CakePHP: 1.3.3<br />
・MySQL: 5.0.77</p>
<p><span id="more-875"></span><strong>ダウンロード</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="language" style="font-family:monospace;">cd /tmp/
wget http://github.com/cakephp/cakephp/tarball/1.3.3
tar xvzf cakephp-cakephp-1.3.3-0-gf01b4ae.tar.gz -C /var/www/www.yourdomain.jp/
cd /var/www/www.yourdomain.jp
mv cakephp-cakephp-efb6e08 cakephp133
rm /tmp/cakephp-cakephp-1.3.3-0-gf01b4ae.tar.gz</pre></td></tr></table></div>

<p><strong>Apacheの設定</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="language" style="font-family:monospace;">cd /etc/httpd/conf.d/
&nbsp;
vi ○○.conf
&lt;VirtualHost xxx.xxx.xxx.xxx:80&gt;
  ServerName www.yourdomain.jp:80
  DocumentRoot /var/www/www.yourdomain.jp/cakephp133
  ServerAdmin webmaster@yourdomain.jp
  ErrorLog logs/error_log-www.yourdomain.jp
  CustomLog logs/access_log-www.yourdomain.jp combined env=!no_log
&lt;/VirtualHost&gt;
&lt;Directory /var/www/www.yourdomain.jp/cakephp133&gt;
  AllowOverride All
  Options -MultiViews
  Order allow,deny
  Allow from all
&lt;/Directory&gt;
&nbsp;
service httpd configtest
service httpd restart</pre></td></tr></table></div>

<p><strong>データベースの作成</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="language" style="font-family:monospace;">CREATE DATABASE blog_test;
GRANT ALL PRIVILEGES ON blog_test.* TO 'test01'@'localhost' IDENTIFIED BY 'pass01';
&nbsp;
use blog_test;
CREATE TABLE posts (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(50),
    body TEXT,
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);
&nbsp;
#サンプルデータ
INSERT INTO posts (title,body,created) VALUES ('タイトル', 'これは、記事の本文です。', NOW());
INSERT INTO posts (title,body,created) VALUES ('またタイトル', 'そこに本文が続きます。', NOW());
INSERT INTO posts (title,body,created) VALUES ('タイトルの逆襲', 'こりゃ本当に面白そう！うそ。', NOW());</pre></td></tr></table></div>

<p><strong>データベースの設定</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="language" style="font-family:monospace;">cd app/config/
cp database.php.default database.php
&nbsp;
vi database.php
var $default = array(
    'driver' =&gt; 'mysql',
    'persistent' =&gt; false,
    'host' =&gt; 'localhost',
    'login' =&gt; 'test01',
    'password' =&gt; 'pass01',
    'database' =&gt; 'blog_test',
    'prefix' =&gt; '',
    'encoding' =&gt; 'utf8',
);</pre></td></tr></table></div>

<p><strong>その他の設定</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="language" style="font-family:monospace;">#/tmpディレクトリを書き込めるようにする。
chown -R apache ../tmp
&nbsp;
#セキュリティ設定
vi core.php
Configure::write('Security.salt', 'ランダムな文字列');</pre></td></tr></table></div>

<p><strong>mod_rewriteの確認</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="language" style="font-family:monospace;">LoadModule rewrite_module libexec/httpd/mod_rewrite.so
AddModule mod_rewrite.c
AllowOverride All</pre></td></tr></table></div>

<p><strong>Postモデルの作成</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="language" style="font-family:monospace;">cd ../models
touch post.php
&nbsp;
vi post.php
&lt;?php
class Post extends AppModel
{
    var $name = 'Post';
&nbsp;
    var $validate = array(
        'title' =&gt; array(
            'rule' =&gt; array('minLength', 1)
        ),
        'body' =&gt; array(
            'rule' =&gt; array('minLength', 1)
        )
    );
}
?&gt;</pre></td></tr></table></div>

<p><strong>Postコントローラの作成</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</pre></td><td class="code"><pre class="language" style="font-family:monospace;">cd ../controllers
touch posts_controller.php
&nbsp;
vi posts_controller.php
&lt;?php
class PostsController extends AppController {
    var $name = 'Posts';
&nbsp;
    //記事の一覧
    function index() {
        $this-&gt;set('posts', $this-&gt;Post-&gt;find('all'));
    }
    //記事の表示
    function view($id = null) {
        $this-&gt;Post-&gt;id = $id;
        $this-&gt;set('post', $this-&gt;Post-&gt;read());
    }
    //記事の追加
    function add() {
        if (!empty($this-&gt;data)) {
            if ($this-&gt;Post-&gt;save($this-&gt;data)) {
                $this-&gt;flash('Your post has been saved.','/posts');
            }
        }
    }
    //記事の削除
    function delete($id) {
        $this-&gt;Post-&gt;delete($id);
        $this-&gt;flash('The post with id: '.$id.' has been deleted.', '/posts');
    }
    //記事の編集
    function edit($id = null) {
        $this-&gt;Post-&gt;id = $id;
        if (empty($this-&gt;data)) {
            $this-&gt;data = $this-&gt;Post-&gt;read();
        } else {
            if ($this-&gt;Post-&gt;save($this-&gt;data['Post'])) {
                $this-&gt;flash('Your post has been updated.','/posts');
            }
        }
    }
}
?&gt;</pre></td></tr></table></div>

<p><strong>Postビューの作成</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
</pre></td><td class="code"><pre class="language" style="font-family:monospace;">cd ../views
mkdir posts
cd posts
touch index.ctp
touch view.ctp
touch add.ctp
touch edit.ctp
&nbsp;
vi index.ctp
&lt;h1&gt;Blog posts&lt;/h1&gt;
&lt;p&gt;&lt;?php echo $html-&gt;link(&quot;Add Post&quot;, &quot;/posts/add&quot;); ?&gt;&lt;/p&gt;
&lt;table&gt;
    &lt;tr&gt;
        &lt;th&gt;Id&lt;/th&gt;
        &lt;th&gt;Title&lt;/th&gt;
        &lt;th&gt;Created&lt;/th&gt;
    &lt;/tr&gt;
    &lt;!-- ここから、$posts配列をループして、投稿記事の情報を表示 --&gt;
    &lt;?php foreach ($posts as $post): ?&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;?php echo $post['Post']['id']; ?&gt;&lt;/td&gt;
        &lt;td&gt;
            &lt;?php echo $html-&gt;link($post['Post']['title'],'/posts/view/'.$post['Post']['id']);?&gt;
            &lt;?php echo $html-&gt;link(
                'Delete',
                &quot;/posts/delete/{$post['Post']['id']}&quot;, 
                null,
                'Are you sure?'
            )?&gt;
            &lt;?php echo $html-&gt;link('Edit', '/posts/edit/'.$post['Post']['id']);?&gt;
        &lt;/td&gt;
        &lt;td&gt;
        &lt;td&gt;
            &lt;?php echo $post['Post']['created']; ?&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;?php endforeach; ?&gt;
&lt;/table&gt;
&nbsp;
vi view.ctp
&lt;h1&gt;&lt;?php echo $post['Post']['title']?&gt;&lt;/h1&gt;
&lt;p&gt;&lt;small&gt;Created: &lt;?php echo $post['Post']['created']?&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;?php echo $post['Post']['body']?&gt;&lt;/p&gt;
&nbsp;
vi add.ctp
&lt;h1&gt;Add Post&lt;/h1&gt;
&lt;?php
echo $form-&gt;create('Post');
echo $form-&gt;input('title');
echo $form-&gt;input('body', array('rows' =&gt; '3'));
echo $form-&gt;end('Save Post');
?&gt;
&nbsp;
vi edit.ctp
&lt;h1&gt;Edit Post&lt;/h1&gt;
&lt;?php
    echo $form-&gt;create('Post', array('action' =&gt; 'edit'));
    echo $form-&gt;input('title');
    echo $form-&gt;input('body', array('rows' =&gt; '3'));
    echo $form-&gt;input('id', array('type'=&gt;'hidden')); 
    echo $form-&gt;end('Save Post');
?&gt;</pre></td></tr></table></div>

<p><strong>ルーティング</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="language" style="font-family:monospace;">cd ../../config
vi routes.php
//Router::connect('/', array('controller' =&gt; 'pages', 'action' =&gt; 'display', 'home'));
Router::connect ('/', array('controller'=&gt;'posts', 'action'=&gt;'index'));</pre></td></tr></table></div>

<p><strong>表示確認</strong></p>
<p>http://www.yourdodmain.jp/</p>
<p><center><a href="http://has.s321.xrea.com/wp-content/uploads/2010/07/blog.gif"><img src="http://has.s321.xrea.com/wp-content/uploads/2010/07/blog.gif" alt="" title="blogチュートリアル" width="518" height="216" class="aligncenter size-full wp-image-877" /></a></center></p>
<p>はい、記事の閲覧、追加、編集、削除、すべて正しく動作しました～！ (^_^)/~</p>
<p>(2022/06/01) トラックバックも一時無効にしました。<br />
(2022/01/29) コメントスパムが多くなりましたので、コメントの投稿を一時無効にしました。</p>
]]></content:encoded>
			<wfw:commentRss>http://has.s321.xrea.com/memo/cakephp/875/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
