آموزش ساخت بلاگ شخصی به همراه پنل مدیریت با Cakephp

Allahparast

Member
قسمت اول :
(مفاهیم اولیه کیک )

سلام دوستان عزیز قصد دارم کیک رو با توضیح و با یک مثال با همدیگر بیکش کنیم و بخوریم .

کیک چیست و چه مزیتی دارد :
-کیک یک چارچوبی جهت برنامه نویسی کاربردی وب که از معماری MVC پیروی می کند و خدا رو شکر متن باز می باشد . کیک ما را در سرعت توسعه پروژهایمان یاری می کند

مزیت های کیک :
- انعطاف پذیری URL ها
- سازگاری با نسخه های ۴ و ۵ PHP
- معماری MVC (الگوی طراحی نرم افزار)
- تعامل با انواع پایگاه داده
- انعطاف پذیری URL ها
- انعطاف پذیری و سرعت ‌template
- ساخت کد
- وجود Helpers ها برای AJAX , HTML FORM , JAVASCRIPT و ...
- لیست های کنترل دسترسی قابل انعطاف - قابل انعطاف
-
آدرس ایمیل ، کوکی ، امنیت ، جلسه ، حمل و درخواست کامپوننت
- محلی سازی
- Consoler
- انعطاف پذیری کش ها
- ودر آخر فعال بودن کیک
- و ...
در قسمت بعد با معماری MVC آشنا خواهیم شد .

* دوستان به هیچ عنوان در این تاپیک سوال نپرسند و جهت پرسش سوالات در اینجا کلیک کنید .

 
آخرین ویرایش:

Allahparast

Member
( مفاهیم کیک - معماری mvc )

قسمت دوم :
( مفاهیم کیک - معماری MVC )

در قسمت قبل با کمی از مفاهیم Cakephp آشنا شدیم .
چند تا چیزی در قسمت قبل یادم رفت ذکر کنم .
۱ . یکی از مزیت های کیک منوآلش هست و متن باز که باعث میشه سریع توسعه داده بشه
۲. این فریم ورک برای PHP ساخته شده
۳ .کیک یک فریم ورک Full Stack می باشد

فریم ورک ها تا اونجایی که من می دونم به دو دسته تقسیم می شوند:
۱.فریم ورک های full stack که هدفشان طراحی است و با امکاناتی که در اختیار برنامه نویس می گذارند به پیشرفت سرعت برنامه نویس می افزاید تا یک سایت را طراحی کند
مثال ها : Cakephp , symfony ,...
۲. فریم ورک های glue stack که هدف ایجاد یک کتابخانه هست که می توان گفت مجموعه از کلاس ها که به طراحی برنامه نویس کمک می کند
مثال ها : zend fw ,Pear ,...

کمی معماری MVC بیاموزیم !
در قسمت اول گفته شد که کیک از معماری MVC پیروی می کند حال MVC چیست و منطق آن چگونه هست ؟
- MVC الگوی طراحی نرم افزار هست که وظایف رو بین این سه قسمت ( Model , view , Controller) تقسیم می کنه . اکثر فریم ورک ها از این منطق پیروی می کنند .

با هم این سه قسمت mvc را بشناسیم :

  • Model : مدل ها همان داده های برنامه ( پایگاه داده ) می باشد
  • View : نمایش ها همان خروجی داده ها در قالبی که ما تعریف می کنیم
  • Controller : کنترلر ها یا کنترل کننده ها واسط بین model و view هستند که پس از درخواستهای که درخواست کننده ایجاد کرده آن را به مسیرهای صحیح هدایت می کن
این تصویر از نحوه عملکرد این معماری است

mvc-rails.png


برای مثال :
به عنوان مثال من که یک کلاینت هستم این آدرس( http://example.com/Cake/posts ) را از مرورگر درخواست می کنم و مرورگر هم از وب سرور تقاضا می کند . و اینجا هست که Dispatcher وارد عمل میشه و این درخواست /Cake/posts رو به کنترلر صحیحش هدایت می کند که تو اینجا کارهای دیگری از قبیل صحت اطلاعات , کوکی , اطلاعات فرم و ... انجام میشه داشتم می گفتم من هدایت میشم به کنترلر posts که این کنترلر تمامی داده ها از جدول را با کمک model بیرون کشیده و خروجی به کنترلر می فرسته و در آخر کنترلر اطلاعات خروجی model را به همراه قالب view به من کلاینت (مرورگر) نمایش میده .

* درقسمت بعدی با نسخه های کیک و دریافت و نصب و پیکر بندی آشنا می شویم
* دوستان به هیچ عنوان در این تاپیک سوال نپرسند و جهت پرسش سوالات در اینجا کلیک کنید .
 
آخرین ویرایش:

Allahparast

Member
دوستان تصمیم گرفتم آموزش ساخت یک هویت کاربری را به آموزش ساخت بلاگ شخصی به همراه پنل مدیریت با Cakephp تغییر بدم شاید یواش یواش باعث توسعه شد .
از مدیران هم خواهشمند هستم که عنوان این تاپیک رو به آموزش ساخت بلاگ شخصی به همراه پنل مدیریت با Cakephp تغییر بدند

با تشکر ا. اله پرست
 

ziXet

مدیر انجمن PHP/MYSQL
دوستان تصمیم گرفتم آموزش ساخت یک هویت کاربری را به آموزش ساخت بلاگ شخصی به همراه پنل مدیریت با cakephp تغییر بدم شاید یواش یواش باعث توسعه شد .
از مدیران هم خواهشمند هستم که عنوان این تاپیک رو به آموزش ساخت بلاگ شخصی به همراه پنل مدیریت با cakephp تغییر بدند

با تشکر ا. اله پرست
انجام شد!
خیلی ممنون از مقاله مفیدت!
حتما ادامه بده
 

Allahparast

Member
( نسخه های کیک - دریافت کیک - نصب کیک - پیکربندی کیک )

قسمت سوم :
( نسخه های کیک - دریافت کیک - نصب کیک - پیکربندی کیک )

در قسمت قبلی با مفاهیم و معماری MVC آشنا شدیم .
شاید اغلب از خودتان پرسیده باشید تفاوت های نسخه های 1.x را با ۱.۲ و همچنین ۱.۳ در چیست و چه امکانات و کمک های جدیدی به هسته اضافه شده است ؟

تفاوت ورژن ۱.x با ۱.۲ چیست ؟؟

  • فرمت فایل جدید برای قسمت مشاهدات (ctp . به جای thtml . )
  • پشتیبانی از Sybase و DB2 و Orcale
  • اضافه شدن از سه کامپونت جدید : auth و Cookie و Email
  • پشتبانی کامل از javascript , Css ( vendors/js , vendors/css(
  • مدل رفتار ( behaviors‌)
  • توابع مربوط به فرم . از HTML Helper به FROM Helper نقل مکان کرد
  • چهار کمک هسته جدید :‌Js , paginator , rss , xml
  • پشتبانی از تم ها
  • خط فرمام کنسول ( bake2 )
  • کلاس های جدید هسته : اشکالزدا Debugger / HttpSocket / Socket
  • پشرفته تر شدن اعتبار سنجی ( validation )
  • استدلال نام
  • ارتقا پیشرفته caching و پشتیبانی از apc , x-cache , memcache و فایل های مبتنی بر پایگاه داده و مبتنی بر caching
  • و کیک های رفع اشکال ها و پیشرفت های کوچک هم بوده است
تفاوت ورژن ۱.2 با ۱.3 چیست ؟؟

تغییراتی که من در ورژن ۱.۳ کیک خواند چند تا تغییر نام بود و حذف چندتا ثابت و چند فایل باید جایگزین می شدند که شما می تونید به صورت کامل تغییرات را در اینجا بخوانید .

جهت دریافت نسخه های کامل beta , alpha , Release کیک :
به آدرس http://github.com/cakephp/cakephp/downloads وارد شده و با هرکدام فایل های فشرده شده که خواستید دریافت کنیدو همچنین می توانید در مخزن کیک دریافت کنید .
ما از نسخه ۱.۳ برای پروژه کوچکمان استفاده خواهیم کرد برای دریافت کلیک کنید

نیازهای کیک جهت پخت :

  1. نیاز به سرور HTTP , به عنوان مثال apache و ترجیحا mode_rewrite فعال ( برای استفاده از URL ها ) اما ضروری نیست .
  2. ترجیحا ورژن PHP از ۵ به بالا برای استفاده از نسخه ی ۱.۳ به بالا و در نسخه های پایین تر ترجیحا از ورژن های ۴ و ۵ استفاده شود.
  3. مشخصات فنی موتور پایگاه مهم نیست و کیک موتورهای پایگاه داده زیر را پشتیبانی می کند و ما در حال حاضر به Mysql احتیاج خواهیم داشت وحتما از رابط phpmyadmin برای مدیریت دیتابیس استفاده کنید :

    • MySQL (4 or greater)
    • PostgreSQL
    • Firebird DB2
    • Microsoft SQL Server
    • Oracle
    • SQLite
    • ODBC
    • ADOdb
نصب و پیکربندی کیک :
به مرحله ای رسیدیم که کیک رو بزاریم تو فر تا بپزیم اما هنوز خیلی داریم تا بخوریمش :shock:ْ!
برای شروع شما یک فولدر به نام Cake در روت ایجاد کرده و فایل ها و فولدرهای درون کیک را در این فولدر جدید منتقل کرده ساختار کیک به این شکل می باشد ( در قسمت بعدی با (ساختار و فایل های اصلی کیک آشنا خواهیم شد):



سپس از وب سرور این دایرکتوری (Cake) را درخواست می کنیم :
HTML:
http://example.com/Cake/
  http://localhost/Cake/
پس از درخواست ؛ به صفحه home کیک وارد میشوید جایی که می بایست درون آن چند باگ و یک استایل همانند عکس زیر مشاهده کنید :



اگر دید این استایل (همانند تصویر زیر ) برای شما وجود ندارد و فقط متن خالی هست تعجب نکنید :



دلایل عدم نمایش استایل کیک این چند نکته هست :

  1. عدم فعال شدن mode_rewrite برای فهمیدن از phpinfo(); رو اجرا کنید
  2. عدم وجود فایل htaccess. در قسمت اصلی فایل کیک
  3. عدم داشتن سطح دسترسی فایل های ‌css ( اکثرا در توزیع های لینوکس )
اگر به هر حال مشکل در فعال کردن mode_rewrite یا اضافه کردن این ماژول به وب سرور (apache) را داشتید می توانید تمای فایل های htaccess. درون کیک را حذف کرده و با ویرایش این خط :
PHP:
//Configure::write('App.baseUrl', env('SCRIPT_NAME'));
به
PHP:
Configure::write('App.baseUrl', env('SCRIPT_NAME'));
یا در اصل برداشتن comment (//) از ابتدای خط بالا و ذخیره فایل مشکل حل می شود.

پس از اجرای کیک خطاهای از این قببل را مشاهده خواهید کرد:



*کادرهای با این رنگ به معنای اخطار می باشد که از سوی دیباگر خود کیک برای شما صادر می شود ( که اکثرا از فایل های درون پوشه app/config ازدیباگر یا اشکالزدای کیک صادر میشود).
* کادرهای با این رنگ به معنای صحت عملکرد اون پیام می باشد و در صورت عدم عملکرد به رنگ شده به عنوان مثال :
کد:
Your tmp directory is NOT writable.
این پیام برای نوشته نشدن داده های مبتنی بر caching و session و Log ها می باشد که برای رفع این مشکل سطح دسترسی باید بیشتر شود
.
*کادرهای با این رنگ به معنای خطا یا هشدار ( اکثرا از قواعد نام گذاری مودل ها ؛ کنترل کننده ها ؛ عدم وجود کنترلر درخواست شده و .. ) می باشد .

این پیام های که از دیباگر کیک برای ما صادر شده رو برسی و رفع می کنیم :

Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE/cake/libs/debugger.php, line 684]
برای امنیت ؛ کیک از روش رمزنگاری یک رشته تصادفی استفاده کرده که به صورت پیشفرض تعیین شده و حتما بایستی آن را تغییر داد و برای تغییر طول رشته مهم نیست . برای ویرایش این رشته با این مسیر رفته app/config/core.php و این خط را پیدا کرده :
PHP:
Configure::write('Security.salt',  'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');
و کد تصادفی ( DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi ) را تغییر دهید(طول کد مهم نیست ).
کد:
Notice (1024): Please change the value of  'Security.cipherSeed' in app/config/core.php to a numeric (digits only)  seed value specific to your application [CORE/cake/libs/debugger.php,  line 688]
اخطار بعدی که صادر شده دوباره از فایل app/config/core.php از خط ۲۰۳ می باشد پیکربندی نوشته شده ('Security.cipherSeed) برای رشته عددی تصادفی ( فقط رقم‌) قابل استفاده برای رمزگذاری و رمزنگاری رشته ها می باشد که باید مقدار پیش فرضش را ویرایش و مقدار جدید جایگزین کرد :
PHP:
Configure::write('Security.cipherSeed',  '76859309657453542496749683645');
اگر در یکی از توزیع های لینوکس به سرو می برید شاید یکی این خطا برای نصب کیکتون گریبانتان شود :


(کیک برای ثبت داده های مبتنی بر caching و سشن و ثبت وقایع از دایرکتوری app/tmp استفاده می کند این خطا نشان دهنده عدم ثبت داده ها می باشد)
در صورتی که به این خطا برخوردید ترمینال را باز کرده و به مسیر کیک رفته ؛ دستور زیر را وارد کنید :
کد:
$ chown -R www-data app/tmp
یا 
$ chown -R 777 app/tmp
این دستورات باعث ایجاد سطح دسترسی بالا نوشتن فایل در دایرکتوری tmp میشود.
تنها خطای که من در نصب کیک مشاهده می کنم :
کد:
      Your database configuration file is NOT  present.
Rename  config/database.php.default to config/database.php
خط اول خطا به ما می گوید که فایل پیکربندی پایگاه داده شما حاضر یا آماده نمی باشد .
خط دوم خطا به ما می گوید فایل به نام database.php.default را در پوشه app/config به این نام database.php تغییر دهید .
تمامی تنظیمات نوع پایگاه داده و اطلاعات اتصال درون این فایل نهفته است ؛ پس از تغییر نام آن را باز می کنیم و حالا آرایه default را برای دیتابیس خودمان تنظیم می کنیم
قبل از پیکربندی فایل database.php :
دیتابیسی در محیط phpmyadmin به نام cakeblog ایجاد کنید.



PHP:
    var $default = array(
        'driver' => 'mysql', // نام  پایگاه داده که با آن کار خواهیم  کرد
//Examples: mysql, postgres, sqlite, pear-drivername, adodb-drivername,  mssql, oracle, or odbc.
 اتصال مداوم مقادیر true & false  //'persistent' => false, 
        'host' => 'localhost', // نام میزبان یا سرور پایگاه اطلاعاتی
// نام کاربری پایگاه داده  'login' => 'root',
        'password' => '', رمز عبور پایگاه داده
        'database' => 'cakeblog',//نام پایگاه داده 
 'prefix' => '',// نام پیشوند برای جداول بانک اطلاعاتی و ما در حال  حاظر نیاز بهش ندارم تا بعد
    );
بعد از تنظیم تمامی خطاها برای شما سبز شدن یا در اصل به کیک خوش آمدید :wink:



چند روزی من سرما خورده بودم ؛ شرمنده مقاله یکم دیر شد به لطف خدا الان بهترم .:oops:
* درقسمت بعد با ساختار فایل های کیک و کار با کنسول در لینوکس و ویندوز آشنا می شویم
* دوستان به هیچ عنوان در این تاپیک سوال نپرسند و جهت پرسش سوالات در اینجا کلیک کنید .
 

Masoud1365

مدیر انجمن
چند روزی من سرما خورده بودم ؛ شرمنده مقاله یکم دیر شد به لطف خدا الان بهترم .
نکنه دوباره مریض شدی ؟
توی روند آموزش ها اگر کاری از دست ما بر میاد بگو درخدمتیم ! اینجوری که داریم پیش میریم فکر کنم تا اواخر سال 1394 بتونیم یه پروژه با کیک بنویسیم :wink:
 

Allahparast

Member
نکنه دوباره مریض شدی ؟
توی روند آموزش ها اگر کاری از دست ما بر میاد بگو درخدمتیم ! اینجوری که داریم پیش میریم فکر کنم تا اواخر سال 1394 بتونیم یه پروژه با کیک بنویسیم :wink:
بله حق شماست سرم شلوغ بود از کار ؛ متاسفم امشب ادامه میدم در ضمن گفتم در اینجا مبحث نزنید ولی کو ...
 

ciwmohsen

New Member
سلام من در حال تهیه یه سایت برای نمایش یه سری محصولات هستم.تا حدودی پی اچ پی بلدم.اما نیاز به راهنماییهای اساسی دارم مخصوصا در ارتباط ما mysql همانطور که گفتم محصولاتی که میخام به نمایش بزارم (در آینده فروش آنلاین) حدودا 20 برند هستش که در هر برند حدودا 15 محصول داریم.میخام اگه میتونید کمکم کنید و بگید که طریقه دسته بندی و وارد کردن محصولات به دیتابیس چجوریه...
 

جدیدترین ارسال ها

بالا