الدرس الثانى فى الكيك

الجزء الاول

بعد ان تعلمنا كيفية انشاء (controller,model,view) وانشاء قاعدة البيانات والاتصال بيها من داخل الكيك.

فسوف نشرح مثال عملى كامل داخل الكيك وهو عبارة عن مدونة لكى تستطيع فهم التعامل مع الكيك بطريقة شاملة ثم بعد ذلك سوف يتم شرح كل شىء يخص الكيك فى الدروس القادمة والان مع المثال العملى:

شرح انشاء مدونة بالكيك

1-Controller (Postscontroller.php)

<?php

class PostsController extends AppController{

public $name=’Posts’;

public $helpers = array(‘Html’, ‘Form’, ‘Session’);

public function index()

{

$this->set(‘posts’,$this->Post->find(‘all’));

$this->set(‘posts’,$this->paginate());

}

public function add() {

if ($this->request->is(‘post’)) {

$this->Post->create();

if ($this->Post->save($this->request->data)) {

$this->Session->setFlash(‘Your post has been saved.’);

return $this->redirect(array(‘action’ => ‘index’));

}

$this->Session->setFlash(__(‘Unable to add your post.’));

}

}

//editing Posts:

public function edit($id = null) {

if (!$id) {

throw new NotFoundException(__(‘Invalid post’));

}

$post = $this->Post->findById($id);

if (!$post) {

throw new NotFoundException(__(‘Invalid post’));

}

if ($this->request->is(‘post’) || $this->request->is(‘put’)) {

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

if ($this->Post->save($this->request->data)) {

$this->Session->setFlash(__(‘Your post has been updated.’));

return $this->redirect(array(‘action’ => ‘index’));

}

$this->Session->setFlash(__(‘Unable to update your post.’));

}

if (!$this->request->data) {

$this->request->data = $post;

}

}

//Deleting Posts:

public function delete($id) {

if ($this->request->is(‘get’)) {

throw new MethodNotAllowedException();

}

if ($this->Post->delete($id)) {

$this->Session->setFlash(__(‘The post with id: %s has been deleted.’, h($id)));

return $this->redirect(array(‘action’ => ‘index’));

}

}

}

?>

– شرح الكود السابق:

– public $name=’Posts’;

.متغير يحمل اسم الجدول بقاعدة البيانات لابد من انشائة وكما هو ملاحظ فهو كابتل وجمع

– public $helpers = array(‘Html’, ‘Form’, ‘Session’);

مصفوفة تحمل مكتبات حيث تحتوى هذة المكتبات على اكواد لكى تستخدها لابد ان تعرفها بالشكل السابق ويمكن ان تعرف كل واحدة منهم على حدة او ان تضعهم فى صورة مصفوفة كما هو مستخدم وسوف نتعرف على اكواد المكتبات السابقة اثناء شرحها وسندرس جميع المكتبات فى دروس منفصلة

– $this->set(‘posts’,$this->Post->find(‘all’));

هذا الكود يستخدم لجلب جميع الداتا من الجدول (posts) من قاعدة البيانات.

– public function add() {

if ($this->request->is(‘post’)) {

$this->Post->create();

if ($this->Post->save($this->request->data)) {

$this->Session->setFlash(‘Your post has been saved.’);

return $this->redirect(array(‘action’ => ‘index’));

}

$this->Session->setFlash(__(‘Unable to add your post.’));

}

}

الكود السابق هو عبارة عن (method) ادخال البيانات من المستخدم الى قاعدة البيانات حيث:

(‘this->request->is(‘post –

هذا الكود المسئول عن حمل الداتا التى يدخلها المستخدم من صفحة الويب وهو من نوع post وهناك نوع اخر هو get وهما يعادلان (POST_ $) و ( GET_ $)

– $this->Post->create();

بهذا الكود تبدا عملية ادخال الداتا من صفحة الويب الى قاعدة البيانات

– $this->Post->save($this->request->data)

عن طريق هذا الكود يتم تخزن الداتا وحفظها فى قاعدة البيانات

– this->Session->setFlash(‘Your post has been saved.’)

هذا الكود يستخدم لطباعة رسائل نصية اى تعادل (echo) فى لغة (php) وهنا يتم طباعة رسالة تعرفك انة تمت عملية حفظ الداتا داخل قاعدة البيانات وهذا الكود هو تابع لمكتبة session المعرفة سابقا.

– public function edit($id = null) {

if (!$id) {

throw new NotFoundException(__(‘Invalid post’));

}

$post = $this->Post->findById($id);

if (!$post) {

throw new NotFoundException(__(‘Invalid post’));

}

if ($this->request->is(‘post’) || $this->request->is(‘put’)) {

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

if ($this->Post->save($this->request->data)) {

$this->Session->setFlash(__(‘Your post has been updated.’));

return $this->redirect(array(‘action’ => ‘index’));

}

$this->Session->setFlash(__(‘Unable to update your post.’));

}

if (!$this->request->data) {

$this->request->data = $post;

}

}

الكود السابق وهو عبارة عن (method) واسمها كما مكتوب (edit) وهى المسئولة عن عملية تعديل الداتا التى ادخلتها الى قاعدة البيانات حيث:

( public function edit($id = null)-

الدالة (edit) كما هو ملاحظ تاخذ متغير اسمة (id) وقيمتة الابتدائية (null) اى قيمة فارغة.

– if (!$id) {

throw new NotFoundException(__(‘Invalid post’));

}

فى حالة عدم وجود قيمة تم تمررها للمتغير (id) فانة يرمى لك تحذير بانة لا توجد تدوينة.

– $post = $this->Post->findById($id);

بهذا الكود تستطيع ان تحصل على داتا من قاعدة البيانات عن طريق رقم id الخاص بالتدوينة ثم توضع هذة الداتا على المتغير (post).

– if (!$post) {

throw new NotFoundException(__(‘Invalid post’));

}

.وبالمثل فى حالة عدم وجود داتا لهذا فانة يرمى لك تحذير

– if ($this->request->is(‘post’) || $this->request->is(‘put’)) {

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

if ($this->Post->save($this->request->data)) {

$this->Session->setFlash(__(‘Your post has been updated.’));

return $this->redirect(array(‘action’ => ‘index’));

}

$this->Session->setFlash(__(‘Unable to update your post.’));

}

.الكود السابق المسئول عن عملية تعديل الداتا وقد تم شرح اكوادة سابقا

– public function delete($id) {

if ($this->request->is(‘get’)) {

throw new MethodNotAllowedException();

}

if ($this->Post->delete($id)) {

$this->Session->setFlash(__(‘The post with id: %s has been deleted.’, h($id)));

return $this->redirect(array(‘action’ => ‘index’));

}

}

وبالمثل الكود السابق يقوم بحذف الداتا التى تريد حذفها من قاعدة البيانات.

Advertisements

ضع تعليقك هنا

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: