زمان جاری: 2012/05/23, 11:44 PM خوش آمدید مهمان گرامی! (ورودعضویت)



alow function


ارسال موضوع  ارسال پاسخ 
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رتبه موضوع:
 
alow function
نویسنده پیام
ehsan_php آفلاین
عضو جدید
*

ارسال‌ها: 4
تاریخ عضویت: Oct 2011
رتبه: 0
تشکر: 3
0 بار تشکر شده در 0 پست
ارسال: #1
alow function
سلام،
کیک توی کد زیر از کنترلر یوزرم ایراد میگریره!

کد PHP:
public function beforeFilter() 
    {
        
parent::beforeFilter();
        
$this->Auth->allow('add''logout');
    } 

و خطاشم اینه

کد:
Fatal error: Call to a member function allow() on a non-object

لطفا راهنماییم کنید

ممنون Heart

پ.ن: دوستان ممنونم! مشکل برطرف شد Big Grin . حالا به خاطر اینکه ضایع نشم، یه توضیحی در مورد کد بالا برام بدید. ممنون
(آخرین تغییر در این ارسال: 2011/11/06 11:36 PM توسط ehsan_php.)
2011/11/06 11:31 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #2
RE: alow function
ضایع شدن نداره. بنا بر توضیح باشه شما هستید. که باید بیایید بگید مشکلتون چی بوده . تا سایرین هم استفاده کنند.
2011/11/07 03:07 AM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : ghasem.fattahpour ehsan_php
ehsan_php آفلاین
عضو جدید
*

ارسال‌ها: 4
تاریخ عضویت: Oct 2011
رتبه: 0
تشکر: 3
0 بار تشکر شده در 0 پست
ارسال: #3
RE: alow function
بیان شما درسته

خوب، خطا که توضیح خاصی نداره و واضحه که چی میگه

در مورد کد زیر:

کد PHP:
public function beforeFilter() 
    {
        
parent::beforeFilter();
        
$this->Auth->allow('add''logout');
    } 

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

مشکل من این بود که کد بالا رو توی کنترلر یوزرم درج کرده بودم، در صورتی که هیچ گونه پیکره بندی یا کامپونتی برای فایل AppController.php (کلاس پایه) تعریف نکرده بودم!

کد PHP:
class AppController extends Controller {
    
//...

    
public $components = array(
        
'Session',
        
'Auth' => array(
            
'loginRedirect' => array('controller' => 'posts''action' => 'index'),
            
'logoutRedirect' => array('controller' => 'pages''action' => 'display''home')
        )
    );

    function 
beforeFilter() {
        
$this->Auth->allow('index''view');
    }


انچه که ما به وسیله ی تابع beforfilter انجام میدیم، عدم نیاز به لاگین مجدد برای تمام اکشن ها در تمام کنترلرهاست

مثلا برای ورود و خروج میتونیم با استفاده از همون به اصطلاح کلاس پایمون توی کنترلر یوزر از کد زیر استفاده کنیم

کد PHP:
public function login() {
    if (
$this->Auth->login()) {
        
$this->redirect($this->Auth->redirect());
    } else {
        
$this->Session->setFlash(__('Invalid username or password, try again'));
    }
}

public function 
logout() {
    
$this->redirect($this->Auth->logout());


دیگه ببخشید اگر کمی و کاستی توی این بحث وجود داره، یه کم خسته بودم با این حال سعی کردم با همون یه خورده تجربه ای که تو این مدت کسب کردم + یه مقدار ترجمه دست و پا شکسته Big Grin این موضوع رو ساده توضیح بدم

موفق باشید
2011/11/07 06:23 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
ارسال موضوع  ارسال پاسخ 


پرش در انجمن: