Yii Framework Forum: مفاهیم پایه ای - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

مفاهیم پایه ای

#1 User is offline   Manee 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 103
  • Joined: 23-September 12

Posted 19 January 2013 - 12:39 AM


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


1

#2 User is offline   Reza m 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 148
  • Joined: 07-March 12

Posted 19 January 2013 - 05:05 AM

View PostManee, on 19 January 2013 - 12:39 AM, said:


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




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


1

#3 User is offline   Manee 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 103
  • Joined: 23-September 12

Posted 19 January 2013 - 05:35 PM


ممنون. منظور از بوت استراپ و crud چىه
منظور از اين جمله تو کتاب که نوشته شده براي هر يک از مراحل ده گانه بالا ميتوان تست را فعال کرد. يعني چي؟
اگه category که مقداره اوليه نداره رو به صورت ارايه بنويسيم تو ادرس بار چطوزي بايد ارسلل بشه ؟ نوع فرمتش به صورت ارايه فرق ميکنه؟

اگه تو پوشه کونترلر چندين فايل کنترلر داشته باشيم بايد براي همشون از. init استفاده بکنيم؟
منظور از رفتاري که کنترلر از خود نمايش دهد يعني چي؟
کنترلر هايي مثل accessRule در فايل خاصي نوشته ميشن که فقط يه بار اجرا بشه؟ تو همه فايلهايي که بهصورت کنترلر مياد نوشته که نميشه؟

<br>
0

#4 User is offline   Hesam K 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 127
  • Joined: 14-August 11

Posted 20 January 2013 - 04:31 PM

View PostManee, on 19 January 2013 - 12:39 AM, said:


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





سلام
فیلتر رو میشه توابعی در نظر گرفت که به طور خودکار قبل و بعد از اجرای هر اکشن، فراخوانی میشه. یک ویژگی مهم فیلتر ها این هست که وقتی قبل از اجرای اکشن فراخوانی میشن، اگر در خروجی خودشون false برگردونند، مانع از اجرای اکشن خواهند شد
با استفاده از این قابلیت هست که میشه مثلا منطق و توابع مربوط به سطح دسترسی ها رو در فیلتر ها تعریف کرد، و قبل از اجرای هر اکشن بررسی های لازم صورت میگیره و تصمیم صحیح گرفته میشه
اما میشه استفاده های دیگری هم ار فیلتر ها کرد، به طور نمونه میشه یک معیار کارایی ابتدایی پیاده کرد، به طوری که قبل از اجرای اکشن زمان رو ذخیره کنید و با زمان بعد از اجرا مقایسه کنید و مدت زمان اجرای اکشن رو به دست بیارید

در رابطه با علامت + هم، همونطور که دوستمون هم اشاره کردند، شما میتونید تعیین کنید که هر فیلتر برای کدام یک از اکشن ها لحاظ بشه. در حالت پیش فرض هر فیلتر خاص روی همه اکشن های کنترلر اعمال میشه، مگر اینکه به طور مشخص بگید برای کدام اکشن ها اجرا بشه
مثلا در نمونه زیر، هر دو فیلتر فقط بر روی اکشن view اعمال میشند و فیلتری روی بقیه اکشن ها تعریف نشده:


  public function filters()
  {
    return array(
      array('ext.seo.components.SeoFilter + view'), // apply the filter to the view-action
      array('application.filters.PerformanceFilter + view'),
    );
  }



در آخر کد مربوط به اون فیلتر کارایی که مثال زدم رو میگذارم تا یک ایده کلی از قضیه بدست بیاد
میبینید که پیچیدگی خاصی وجود نداره و فقط کدی که میخوایم قبل و یا بعد از اکشن اجرا بشه رو در ساختار تعریف شده قرار میدیم



class PerformanceFilter extends CFilter
{
    protected $time_start;
    protected function preFilter($filterChain)
    {		
        // logic being applied before the action is executed
	$this->time_start = microtime(true);
        return true; // false if the action should not be executed
    }
 
    protected function postFilter($filterChain)
    {
        // logic being applied after the action is executed
        $tf = microtime(true) - $this->time_start;
        $tf = round($tf,4);

        echo '<div style="direction:ltr"> done in ' . $tf . ' seconds </div>' ;
    }
}




راجع به باقی سوالاتی که پرسیدید راستش من که هیج کدوم رو درست متوجه نشدم اگه تک تک و تفصیلی تر مطرح کنید ممنون میشیم ;D

1

#5 User is offline   Manee 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 103
  • Joined: 23-September 12

Posted 29 January 2013 - 05:21 AM


سلام. از جیکوئری چطوری میشه استفاده کرد؟ برای پردازش فرم منظورمه. آیا نیاز به مدل و کنترلر داره؟
تو دموی بلاگ دو تابع به اسمهای aftersave و beforesave بودن که فقط تعریف شده بودن ولی ندیدم جایی استفاده بشه. منظور چیه؟


0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users