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

[font="Tahoma"][rtl]

سلام به دوستان مواردی تو کتاب بود که برام خیلی گنگ بودن میخواستم اونها رو بپرسم.

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

[/font]

[/rtl]

[rtl]

[size="3"][font="Tahoma"]سلام دوست عزیز

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

به عنوان مثال بررسی صطح دسترسی کاربر باید قبل از هر اکشن انجام بشه ، اما اکشن ورود نباید شامل این فیلتر بشه تا کاربر بتونه وارد سیستم بشه[/font][/size]

[/rtl]

[rtl]

ممنون. منظور از بوت استراپ و crud چىه

منظور از اين جمله تو کتاب که نوشته شده براي هر يک از مراحل ده گانه بالا ميتوان تست را فعال کرد. يعني چي؟

اگه category که مقداره اوليه نداره رو به صورت ارايه بنويسيم تو ادرس بار چطوزي بايد ارسلل بشه ؟ نوع فرمتش به صورت ارايه فرق ميکنه؟

اگه تو پوشه کونترلر چندين فايل کنترلر داشته باشيم بايد براي همشون از. init استفاده بکنيم؟

منظور از رفتاري که کنترلر از خود نمايش دهد يعني چي؟

کنترلر هايي مثل accessRule در فايل خاصي نوشته ميشن که فقط يه بار اجرا بشه؟ تو همه فايلهايي که بهصورت کنترلر مياد نوشته که نميشه؟

[/rtl]<br>

[right][rtl][font="Tahoma"]

سلام

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

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

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

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

مثلا در نمونه زیر، هر دو فیلتر فقط بر روی اکشن view اعمال میشند و فیلتری روی بقیه اکشن ها تعریف نشده:

[/font][/rtl][/right]




  public function filters()

  {

    return array(

      array('ext.seo.components.SeoFilter + view'), // apply the filter to the view-action

      array('application.filters.PerformanceFilter + view'),

    );

  }



[right][rtl][font="Tahoma"]

در آخر کد مربوط به اون فیلتر کارایی که مثال زدم رو میگذارم تا یک ایده کلی از قضیه بدست بیاد

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

[/font][/rtl][/right]





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>' ;

    }

}




[right][rtl][font="Tahoma"]

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

[/font][/rtl][/right]

[rtl]

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

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

[/rtl]