CakePHP:Kamentyをブログに追加します。

<p />そこで、「コンセプト」でプログラミングを開始し、最終的に何らかのフレームワークを扱うことにしました。

<p />このためにどのフレームワークを使用するかという苦痛な選択に直面しています。 これを行うには、多数の記事、レビュー、速度、パフォーマンス、ユーザビリティ、インストールの比較分析を見つけるか、Googleで「php framework」と入力してクリックするだけです。 「私はラッキーです。」

<p />大丈夫、CakePHPというフレームワークを選択して開発しました!

もちろん、その長所と短所について読む時間はありません。できるだけ早くプロジェクトを実装する必要があります。 そのため、検索でチュートリアルを作成し、 5分で小さなブログを取得する方法に関する記事にアクセスします

<p />この記事は、プロジェクトにCakePHPをインストールする方法の説明から始まります。 各パパに保存する必要があるものと、それらが必要な理由を説明します。

次に、ポイントに直行し、テーブルの作成、MySQLへのアクセスの設定(何らかの理由でその順序で、逆も同様)を行い、Apacheでmod_rewriteが正しく設定されているかどうかを確認します。 そして、彼はブログの作成を開始することを申し出ます。

このブログは、投稿を含む表です。 投稿を追加、編集、削除できます。 これらはすべて非常に単純であることに注意してください。 レールと同じくらい簡単です。

<p />この記事はシンプルでわかりやすい英語で書かれており、ブログを作成するために必要なすべてのコードが含まれています。 自分をコピーして貼り付けてください。

<p />しかし、このチュートリアルでこのブログを作成した後、すべてのブログが保持される最も重要なものがないことが突然わかります。 これらは不愉快です(または言語の純粋さの愛好家のための「コメント」)。 パニック状態で、Googleはグーグルを始め、拡張されたチュートリアルを探しますが、非常に複雑なコンポーネント以外のものは見つからないと確信しています。 そして、必死のステップを決定します。セメントの機能を自分で追加します。

<p />これを行うには、まずkamentyが保存されるテーブルを作成します

CREATE TABLE `comments` (

`id` int(11) NOT NULL auto_increment,

`post` int(11) default NULL,

`comment` text NOT NULL,

`created` datetime NOT NULL,

`modified` datetime NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `comments` VALUES (1, 1, 'This is a comment to the first post.', NOW( ), '0000-00-00 00:00:00');

INSERT INTO `comments` VALUES (2, 2, 'The comment to second post.', NOW( ), '0000-00-00 00:00:00');







<p />このクエリは「comments」テーブルを作成し、2つのコメントを追加しました。 それぞれ1番目と2番目のレコードに。

<p />これらのkamentyを表示する必要があります。 MVCについて聞いたので、すぐにポストコントローラー(posts_controller.php)にアクセスしてください。 そして、そこに次の行を追加します。

var $uses = array('Post', 'Comment');







<p />コントローラーの$ uses変数は、コントローラーが使用するモデルを担当します。 この変数が設定されていない場合、デフォルトでは、実際にコントローラーがあるモデルのみが使用されます。 つまり、PostsControllerはPostのみを使用します。

<p />ここでは、ご覧のとおり、コントローラーにPostおよびCommentモデルを使用することを伝えています。

<p />次に、実際の投稿を表示するコントローラー機能を編集します。

function view($id)

{

$this->Post->id = $id;

$this->set('post',$this->Post->read());

// :

$this->set('comments' , $this->Comment->findAllByPost($id));

}







<p />この新しい行を使用して、ビューに新しいコメント変数を追加し、その値を結果$ this-> Comment-> findAllByPost($ id)に設定します。

<p />ここで、素晴らしいfindAllByPostメソッドについていくつかの言葉を言わなければなりません。

<p />スマートCakePHPでは、AppModelを継承するクラスがfindAllBy <フィールド名>(<値>)などのメソッドを使用できます。 <field name> = <value>のモデルに対応するテーブルからすべてのレコードを検索します。 いいですね

<p />したがって、$ this-> Comment-> findAllByPost($ id)は、表示された投稿に属するすべての仮面を返します。

<p /> app / views / postsフォルダーにあるview.thtmlファイルで、これらのカメラの表示を追加します。 これを行うには、このファイルの最後に追加します。

<?php

foreach($comments as $comment):

echo ''.$comment['Comment']['comment'].'<br/>';

endforeach;

?>







<p />ここで、ビューは、前のコードでビューに渡したすべてのチャンバーを通過し、それらを画面に表示します。 かっこいい かっこいい!

<p />しかしkamentyで最も重要なことは、それらを残すことができるということです。 したがって、投稿ページの下部にkamentyを追加するフォームが必要です。 これは、アシスタントフォームに役立ちます。

var $ helpers = array( 'Html'、 'Form');

<p /> posts_controller.phpファイルのこの行は、どのアシスタントを作業に使用するかをコントローラーに伝えます。 HtmlとFormは、それぞれポストコントローラーに役立ちます。

<p />同じview.thtmlファイルに、次を追加します。

<?php

echo $form->create('Comment');

echo $form->hidden('post', array('value' => $post['Post']['id'])); echo $form->input('comment', array('type'=>'textarea'));

echo $form->submit('Submit');



echo $form->end();

?>







<p />これはkamentを追加するフォームを作成した小さなヘルパーです。 その中には、投稿の隠された識別子が示されており、テキストエリアではkamentを入力することが提案されています。

<p />今、このkamentの追加を制御できるものが必要です。 これがコメントコントローラーになります。

<?php

class CommentsController extends AppController

{

var $name = 'Comments';

function add()

{

if (!empty($this->data))

{

if ($this->Comment->save($this->data))

{

$this->Session->setFlash('Redirecting');

$this->redirect('/posts/view/'.$this->data['Comment']['post']);

}

else

$this->Session->setFlash('You fail');

}

}

}







<p />カメラコントローラーには、1つの追加イベントに対して1つのハンドラーしかありません。 ポストコントローラーを追加するための同じハンドラーと同じで、別の場所にリダイレクトするだけです。

<p />万歳! これで、kamentyを含む実際のブログができました。 はい、単純ではありませんが、MVCの真のアーキテクチャに従って、実際のフレームワークで記述されています。 自分の手で。




All Articles