# زبان های اسکریپتی > PHP > Yii Framework >  یک پروژه با yii

## masiha68

سلام
از دوستام کسی یه اموزش رایگان یه پروژه کوچیک با yii  رو داره که کار کردن باهاش رو توضیح بده....
ممنون

----------


## MMSHFE

توی خود سایت Yii آموزش Yiiblog هست که یک وبلاگه که با Yii نوشته شده و مرحله به مرحله توضیح داده (همراه با مستنداتشه).

----------


## koorosh4

> توی خود سایت Yii آموزش Yiiblog هست که یک وبلاگه که با Yii نوشته شده و مرحله به مرحله توضیح داده (همراه با مستنداتشه).


آقا سلام . openssl سیستم من از بین رفته و دسترسی به https ندارم . باید چیکار کنم ؟

----------


## MMSHFE

سایتش با http هم باز میشه. بعدش هم تو اینترنت آموزش نصب OpenSSL زیاده.

----------


## koorosh4

آقا فایده ها و مشخصات yii را بی خیال بشید . یه برگه بزنید مخصوص yii که بگه چطور باید توش چیزی نوشت . من تمام منابع را خ.ندم . اما یه سری دستوراتش از cmd باید داده بشه و یه سری دیگه باید جاهای دیگه نوشته بشه که نویسنده ی مطلب نگفته کجا و در کدوم خط و چطور بنویسیم . یا فقط رفته ترجمه کرده و یا اگه از خودش نوشته یه عکسی چیزی .... الان شما استارتشو بزن بذار ما که میخوایم بفهمیم چی به چیه اقلا گم نشیم که پشیمون بشیم . مثلا الان من میخوام یه صفحه بسازم 4 تا تکست داشته باشه و وصلش کنم به بانک اطلاعاتی (این کار در ورد پرس عالی انجام میشه) اما خداییش اینجا این کدهایی که گفته کارهای مفید میکنن را نمیدونم کجا توی کدوم فایل چطور با چی باید بنویسم (البت با چی و چطور را بلف اومدم)

----------


## masiha68

این لینکو یه نگاهی بنداز واسه استارت بد نیست یا پکیج رو بخر
http://www.yiiframework.com/forum/in...8%D8%B1%DA%A9/

----------


## MMSHFE

> من تمام منابع را خ.ندم . اما یه سری دستوراتش از cmd باید داده بشه و یه سری دیگه باید جاهای دیگه نوشته بشه که نویسنده ی مطلب نگفته کجا و در کدوم خط و چطور بنویسیم .


تمام منابع رو نخوندین یا حداقل کامل و با دقت نخوندین. تاپیک *آموزش گام به گام Yii* رو خوندین؟ پکیج *آموزش تصویری Yii* رو تهیه کردین؟ پیشنیازهای کار با فریمورک رو بلدین (MVC و OOP) و روی اونها تسلط دارین؟ تا جایی که یادمه توی PHP خیلی وارد نبودین. دقت کنید که فریمورکهای PHP قدرتشون رو از خود PHP میگیرن و درنتیجه برای درک کامل اونها باید اول خود زبان PHP و معماریهای مختلف مثل Singleton و ActiveRecord و Factory و Adapter و MVC و... رو بلد باشین. توصیه میکنم پکیج *آموزش جامع PHP* و بعدش *آموزش MVC در PHP* رو تهیه کنید یا حداقل سرفصلهاش رو ببینید و با eBook و... سعی کنید اول اونها رو کامل یاد بگیرین و درک کنید و بعد به سراغ فریمورکها بیاین (هر فریمورکی که میخواد باشه مهم نیست). فریمورک رو با وردپرس و کلاً CMSها مقایسه نکنید. اینجا باید بفهمید چیکار میکنید و انتظار یک محیط ویژوال که چهارتا قابلیت محدود در اختیارتون میگذاره نداشته باشین.

----------


## masiha68

> تمام منابع رو نخوندین یا حداقل کامل و با دقت نخوندین. تاپیک *آموزش گام به گام Yii* رو خوندین؟ پکیج *آموزش تصویری Yii* رو تهیه کردین؟ پیشنیازهای کار با فریمورک رو بلدین (MVC و OOP) و روی اونها تسلط دارین؟ تا جایی که یادمه توی PHP خیلی وارد نبودین. دقت کنید که فریمورکهای PHP قدرتشون رو از خود PHP میگیرن و درنتیجه برای درک کامل اونها باید اول خود زبان PHP و معماریهای مختلف مثل Singleton و ActiveRecord و Factory و Adapter و MVC و... رو بلد باشین. توصیه میکنم پکیج *آموزش جامع PHP* و بعدش *آموزش MVC در PHP* رو تهیه کنید یا حداقل سرفصلهاش رو ببینید و با eBook و... سعی کنید اول اونها رو کامل یاد بگیرین و درک کنید و بعد به سراغ فریمورکها بیاین (هر فریمورکی که میخواد باشه مهم نیست). فریمورک رو با وردپرس و کلاً CMSها مقایسه نکنید. اینجا باید بفهمید چیکار میکنید و انتظار یک محیط ویژوال که چهارتا قابلیت محدود در اختیارتون میگذاره نداشته باشین.


اقای شهرکی یه سوال واسم پیش اومده ... من الان ام وی سی و شی گرایی رو در حد قابل قبولی بلدم یعنی با هر دوشون سایت نوشتم و روی یی هم دارم کار می کنم ولی مشکل اینه بجای استفاده امکانات یی از کلاس ها و کدهای خودم استفاده می کنم مثلا بجای گرید ویو یی خودم یه گرید ویو نوشتم یا واسه کلاس دیتابیس ... یعنی کلا دارم از یی فقط به عنوان یک چهار چوب کاری که ام وی سی رو راحت توش میشه پیاده کرد استفاده می کنم . این کارم چقد منطقیه و اینکه واقعا لازمه با کلاس ها و وجکت و کامپونتهای خود یی کار کنیم .؟

----------


## MRmoon

> اقای شهرکی یه سوال واسم پیش اومده ... من الان ام وی سی و شی گرایی رو در حد قابل قبولی بلدم یعنی با هر دوشون سایت نوشتم و روی یی هم دارم کار می کنم ولی مشکل اینه بجای استفاده امکانات یی از کلاس ها و کدهای خودم استفاده می کنم مثلا بجای گرید ویو یی خودم یه گرید ویو نوشتم یا واسه کلاس دیتابیس ... یعنی کلا دارم از یی فقط به عنوان یک چهار چوب کاری که ام وی سی رو راحت توش میشه پیاده کرد استفاده می کنم . این کارم چقد منطقیه و اینکه واقعا لازمه با کلاس ها و وجکت و کامپونتهای خود یی کار کنیم .؟


خسته نباشید عرض می کنم.

خوب شما که فقط میخوایاز mvc استفاده کنی از فریم ورک هایی مثل flight و slim استفاده کن.

بعدش من نمیدونم چرا وقتی تو خود فریم ورک کلاسای قدرتمندی هست چرا دوباره خودتون کلاس نوشتین؟

----------


## masiha68

> خسته نباشید عرض می کنم.
> 
> خوب شما که فقط میخوایاز mvc استفاده کنی از فریم ورک هایی مثل flight و slim استفاده کن.
> 
> بعدش من نمیدونم چرا وقتی تو خود فریم ورک کلاسای قدرتمندی هست چرا دوباره خودتون کلاس نوشتین؟


خب خیلی بحثا میاد وسط ... یک زمان یادگیری کلاس دیگران که یه کار زمان بره ... دوم اینکه وقتی یک کلاس رو خودت می نویسی باهاش راحت تری و راحت تر می تونی ساختار و کارکردش رو درک کنی و در صورتی که خطایی پیش بیاد راحت تر می تونی حلش کنی ... 
مثل این می مونه یکی یه ماشین بخره و استفاده و یکی هم خودش ماشین رو درست کنه و استفاده کنه ... طبیعتا کسی که ماشین رو خودش درست می کنه زمان و انرژی بیشتری می بره ولی در عوض سطح سواد و کاراییش بیشتره و بهتر می دونه با یه ماشین چجوری تعامل کنه
من حتی توی شی گرایی هم کلاس های دیگران رو باز نویسی می کردم و سعی می کردم مطابق سلیقه ی شخصیم بنویسمشون . نمی گم کلاس های من از کلاس های فریم ورک بهترن ولی خب کار منو راحت تر می کنن ... مثلا کلاس دیتابس من یه کلاسیه که چند ماهه دارم باهاش کار می کنم و خیلی باهاش راحتم و حالا بیام بخاطر یی این کلاس رو کنار بزارم !؟

----------


## MMSHFE

جالبه استدلالتون. فریمورک کلی امکانات در اختیارتون گذاشته که استفاده نمیکنید فقط چون با سینتکس کلاس خودتون راحتترین؟ امکانات اکتیو رکورد رو کلاس شما هم داره؟ همینجوریش فریمورک بخاطر امکانات زیادی که داره نسبت به PHP خام کندتره و حالا شما هم با اضافه کردن بخشهای غیرسازگار کندترش میکنید و از امکاناتی که بخاطر اونها کند شده هم استفاده نمیکنید؟ اگه فقط MVC براتون مهم بوده خوب بقول دوستمون از Slim یا MicroMVC استفاده میکردین. مطمئن باشید کلاس شما توی راندمان و راحتی کدنویسی به کلاسهای داخلی فریمورک نمیرسه چون مثل حلقه های زنجیر بهم وصل هستن. فوقش شاید یک ماه صرف این بشه که به سینتکس جدید عادت کنید ولی بعدش خواهید دید که سرعت کارتون چند برابر میشه.

----------


## masiha68

حرفتون منطقیه و همین الان سرعت کارم نسبت به قبل چند برابر شده ولی به نظرم اینجوری مثل asp  کارا بار میایم که فقط بلدن از سیستم استفاده کنن و هیچوقت نمی دونم سیستم چجوری کار می کنه ...یعنی با فریم ورک ما هم فقط یاد می گیریم از فریم ورک استفاده کنیم و اگه بحثی پیش بیاد که با فریم ورک حل نشه و توی چهار چوب کاری اون نگنجه به مشکل بر می خوریم 

البته منم وقت کنم یاد می گیرم و الان بخاطر کمبود وقت از کلاس های خودم استفاده می کنم ولی در کل نمی خوام خودمو محدود کنم به فریم ورک و سعی می کنم هرچه زودتر فریم ورک خودمو بنویسم

----------


## MRmoon

> حرفتون منطقیه و همین الان سرعت کارم نسبت به قبل چند برابر شده ولی به نظرم اینجوری مثل asp  کارا بار میایم که فقط بلدن از سیستم استفاده کنن و هیچوقت نمی دونم سیستم چجوری کار می کنه ...یعنی با فریم ورک ما هم فقط یاد می گیریم از فریم ورک استفاده کنیم و اگه بحثی پیش بیاد که با فریم ورک حل نشه و توی چهار چوب کاری اون نگنجه به مشکل بر می خوریم 
> 
> البته منم وقت کنم یاد می گیرم و الان بخاطر کمبود وقت از کلاس های خودم استفاده می کنم ولی در کل نمی خوام خودمو محدود کنم به فریم ورک و سعی می کنم هرچه زودتر فریم ورک خودمو بنویسم


پس دوست عزیز حتما از slim یا flight یا از این فریم ورکای کوچیک که mvc رو با چند تا امکان جانبی مثل کار با http فراهم کردن کار کنید. سرعت برنامه تون بیش تر میشه. همچنین حجم کدتون پایین میاد.

----------


## masiha68

من دنبال این دوتا فریم ورک گشتم ولی مستندات زیادی نداشتن برعکس یی
و اینکه من الان 80 درصد یه پروژه رو با یی انجام دادم ...به نظرتون منطقیه بیام فریم ورک رو عوض کنم ؟ یا فعلا با همین ادامه بدم

----------


## MMSHFE

> به نظرم اینجوری مثل asp  کارا بار میایم که فقط بلدن از سیستم استفاده کنن و هیچوقت نمی دونم سیستم چجوری کار می کنه ...یعنی با فریم ورک ما هم فقط یاد می گیریم از فریم ورک استفاده کنیم و اگه بحثی پیش بیاد که با فریم ورک حل نشه و توی چهار چوب کاری اون نگنجه به مشکل بر می خوریم


بنظرم این حرفتون کاملاً یک مقایسه اشتباهه چون دات نت مثل فریمورکهای PHP نیست. فریمورکهای PHP همه Open Source هستن و برنامه نویس میتونه بفهمه سیستم چطوری کار میکنه درحالی که توی دات نت فقط یکسری DLL داره و به سورس دسترسی نداره. بعلاوه توی فریمورکهای PHP برخلاف دات نت، میشه هرجا دوست داشتین از چهارچوب فریمورک خارج بشین ولی فرضاً شما توی ASP.NET نمیتونید کدی بنویسید که از چهارچوب dotNET Framework خارج باشه.

----------


## masiha68

> ایمیلت را بده من یک پروژه کامل ابته خیلی کوچولو برات بفرستم .


والان الان خودم پروژه نوشتم با یی ... تقریبا یه پروژه ی کاملا با یی نوشتم شامل پنل اس ام اس و درگاه پرداخت و چند کاربره بودن و .... ولی بازم همونطوری که گفتم از بیشتر امکانات یی استفاده نکردم . 
کتاب های اقای برجیان رو هم خوندم خیلی خوب بودن ...
این ایمیل منه ممنون میشم واسم ارسال کنی : why_god88@yahoo.com

----------


## masiha68

> اینجور که شما میگید که من سوسک هم نمیشم در برابر سایتی که شما نوشتی . من هموز دنبال اینم که چطور سایتم را عضو گیری و لاگ این را براش بنویسم . یعنی هنوز توی sign up و  sign in موندم . 
> همونو براتون میفرستم اما برام نخندیااااا .


نه بابا خنده چیه ... اگه سوالی اول منو نگاه کنی گریه ات می گیره :)
در مورد یی هم تا یاد نگرفتی باهاش پروژه ننویس وگرنه بعدا پشیمون میشی ... بهتره از امکاناتش استفاده کنی

----------


## MMSHFE

> فیلم ها را نه تهیه نکردم . من چند بار خرید اینترنتی کردم سرم کلاه رفته . اما دنبالش میگردم و از یه شرکت میگیرم که اقلا گارانتی داشته باشه .


والا تا حالا که بیش از 200 فروش اینترنتی داشتیم و حتی هزینه پست رو هم خود ایران نهاد داده و میتونید فهرست خریدها رو توی لینکهای توی امضام در پایین هر صفحه مشاهده کنید و شماره هرکدوم رو هم خواستین میدم (اگه راضی بود) که زنگ بزنید تا مطمئن بشین. بهرصورت فهرست بلندبالای خریداران و حتی کسانی که پیش خرید میکنن پکیج ها رو (برای مثال epay.itadmins.it/box/6 همه پیش خریده چون پکیج تابستان آماده میشه) نشون میده که تا حالا سر کسی کلاه نگذاشتیم. قطعاً تأثیر یک فیلم آموزشی به زبان فارسی با کیفیت تصویری Full HD خیلی بیشتر از یک کتاب یا eBook هست که میتونه اشتباه تایپی و... داشته باشه.

----------


## koorosh4

کد بانک اطلاعاتی را توی کدوم فایل از کدوم پوشه باید نوشت ؟ کدی که میگه یوزر و پسورد را بگیره را میگم .

----------


## koorosh4

1- چطور وقتی لاگ این میشیم به آدرس زیر راهنمایی کنیم وب را ؟
http://localhost/tes...dex.php?r=Book/

2- به مشکل زیر چطور پاسخ بدم ؟
http://localhost/tes...=gii/form/index
دوستان عزیز توی این صفحه گزینه های مختلفی هست که هرکدومشون مقادیری را  میخواد . دوتا از این گزینه ها را آقای برجیان توضیح دادن و گفتن باید چه  مقادیری را بهشون بدیم . اما سه تای دیگش مونده . . اگه میدونید این سه تای  دیگه چی هستن و چه مقادیری باید بهشون داد و بگید ممنون میشم .
البته من یکی را ترجمه کردم و فهمیدم مربوط به ساخت فرم و قالب سایت هست
form generator
اما یه مقدارش برام نا مفهومه و نمیدونم چه مقداری باید بهش بدم
Scenario
را میگم . نمیدونم چیه

 قضیه بعدیش اینه .... کی بلده ؟ 


http://localhost/tes...hp?r=book/admin
تو اینجا این ارور چه معنی داره ؟ 

Error 403
You are not authorized to perform this action
 :تشویق:

----------


## MMSHFE

> کد بانک اطلاعاتی را توی کدوم فایل از کدوم پوشه باید نوشت ؟ کدی که میگه یوزر و پسورد را بگیره را میگم .


protected/config/main.php

----------


## MMSHFE

> 1- چطور وقتی لاگ این میشیم به آدرس زیر راهنمایی کنیم وب را ؟
> http://localhost/tes...dex.php?r=Book/


توی اکشن لاگین چنین کدی مینویسید:
if($model->login) {
    $this->redirect('book/index');
}



> 2- به مشکل زیر چطور پاسخ بدم ؟
> http://localhost/tes...=gii/form/index
> دوستان عزیز توی این صفحه گزینه های مختلفی هست که هرکدومشون مقادیری را  میخواد . دوتا از این گزینه ها را آقای برجیان توضیح دادن و گفتن باید چه  مقادیری را بهشون بدیم . اما سه تای دیگش مونده . . اگه میدونید این سه تای  دیگه چی هستن و چه مقادیری باید بهشون داد و بگید ممنون میشم .
> البته من یکی را ترجمه کردم و فهمیدم مربوط به ساخت فرم و قالب سایت هست
> form generator
> اما یه مقدارش برام نا مفهومه و نمیدونم چه مقداری باید بهش بدم
> Scenario
> را میگم . نمیدونم چیه


Model Class کلاسی هست که برای مدل فرم میخواین تولید بشه (دلخواه) - مثلاً Login
View Name نام فایل ویو که میخواین برای مدل درست بشه. مثلاً اگه site/login بگذارین، فایل ویو رو در مسیر protected/views/site/login.php تولید میکنه و برای نمایش فرم لاگین باید توی کنترلر/اکشن دلخواه دستور زیر رو بنویسید:
$model = new Login;
$this->render('//site/login', array('model'=>$model));
View Path مسیر ایجاد فایل View هست که اگه اسم پوشه views یا مسیرش رو عوض نکردین، این مورد رو نمیخواد دست بزنید.
Scenario سناریوی دلخواه. سناریو تو بحث اعتبارسنجی عناصر مهمه. البته اختیاریه ولی فرضاً اگه اینجا بنویسید login و بعد، توی اعتبارسنجی مدل Login که در قسمت Model Class نوشتین، بیاین بگین:
public function rules() {
    return array(
        array('username', 'match', 'pattern'=>'#[a-z0-9]+#i', 'on'=>'login'),
        ...
    );
}
و ویو رو هم اینطوری صدا بزنید:
$model = new Login;
$model->scenario = 'login';
$this->render('//site/login', array('model'=>$model));
اونوقت نام کاربری باید فقط از حروف و اعداد تشکیل شده باشه. منتها این قاعده فقط توی سناریوی لاگین عمل میکنه و فرضاً موقع ثبت نام، میتونه کارکترهای دیگه هم بگذاره. البته این مثال خیلی کاربری نیست و فقط خواستم مفهوم سناریو رو بفهمین. یک مثال کاربردیش اینه که میخواین کاربر موقع ثبت نام و لاگین، رمز عبور رو حتماً تعیین کنه ولی موقع ویرایش، ضروری نباشه.



> قضیه بعدیش اینه .... کی بلده ؟ 
> http://localhost/tes...hp?r=book/admin
> تو اینجا این ارور چه معنی داره ؟ 
> 
> Error 403
> You are not authorized to perform this action


معناش اینه که شما مجوز دسترسی به این اکشن رو ندارین. باید توی متد accessRules سطح دسترسی رو به این متد باز کنید. توضیحات بیشتر رو *اینجا* بخونید.

----------


## koorosh4

خیلی ممنونم از راهنماییتون آقای مدیر .  :تشویق:

----------


## MMSHFE

خواهش میکنم. البته دکمه تشکر کاربرد قشنگتری داره.

----------


## koorosh4

> خواهش میکنم. البته دکمه تشکر کاربرد قشنگتری داره.


جالبه . تو این مسیر wamp\www\yii\framework\web\auth/ فایل زیر موجود نیست
CAccessControlFilter.php 
حالا باید کدشو از سایتش بگیرم و خودم بسازمش تو اون مسیر ؟ تو سایتش که فقط گفته این برای بالا بردن امنیت و از این حرفا .

----------


## MMSHFE

کل فریمورک رو مجدداً از سایتش دانلود کنید. شاید پاک شده از سیستمتون چون این فایل همراه فریمورک وجود داره. با کمک این فیلتر میتونید مشخص کنید که به هر اکشنی، چه کاربرانی دسترسی دارن و برای مثال، دسترسی به اکشن user/view رو برای کاربرانی که لاگین نکردن، ببندین.

----------


## koorosh4

> کل فریمورک رو مجدداً از سایتش دانلود کنید. شاید پاک شده از سیستمتون چون این فایل همراه فریمورک وجود داره. با کمک این فیلتر میتونید مشخص کنید که به هر اکشنی، چه کاربرانی دسترسی دارن و برای مثال، دسترسی به اکشن user/view رو برای کاربرانی که لاگین نکردن، ببندین.


حل شد . . .

----------

