amirkian
4 سال پیش توسط amirkian مطرح شد
5 پاسخ

مطمئن شدن از نحوه ثبت درست policy ها در لاراول

چطور میتوانم مطمئن بشوم که policy به درستی ثبت شده است یا خیر در لاراول؟!


ثبت پرسش جدید
amirkian
@a.kian32 4 سال پیش مطرح شد
0

برای تست policy برای اینکه ببینیم که اصلا کار میکند یا نه
میتوانیم داخل کدهای متد مربوطه بجای اینکه چیزی را return کنیم
بنویسیم
dd('somthing')
تا ببینیم اصلا چیزی نمایان میشود یا نه
و نکته ی دوم اینکه policy ها روی مدل ها کار میکنند و حتما نیاز است که
یک شی از مدل مربوطه به درستی ساخته شده باشد تا بتوانیم از policy های مورد نظر آن کلاس
استفاده کنیم.
تجربیات بنده بعد از 3 روز درگیری


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
1

سلام یعنی چی بدرستی ثبت شده یا خیر !
بله میدونم ثبت چیه ! ولی درست بدودن یا نبودن دیگه چیه !
روش ثبت یک policy کاملا واضح هست حالا شما ازش استفاده میکنید در شرایط درست و غلط تست میکنید اگر کار کرد پس یعنی ثبت شده


amirkian
@a.kian32 4 سال پیش آپدیت شد
0

سلام
ببینید من Policy را این شکلی ثبت کردم در برنامه

protected $policies = \[  
// 'App\\Model' => 'App\\Policies\\ModelPolicy',  
Post::class => PostPolicy::class,  
Article::class => ArticlePolicy::class  
\];

و متد زیر را برای policy ارتیکل تعریف کردم

public function delete(User $user, Article $article)  
{  
// return $user->id === $article->user\_id;  
return true;  
}  

و در یک ویو از ارتیکل به صورت زیر به کار بردم

@can('delete', $article)
        <div class="content">
            <h3>post view policy</h3>
        </div>
@endcan

طوری که من سیاست گذاری کردم باید همیشه مقدار true برگشت داده بشود و policy اجرا شود
ولی هیچ اثری در برنامه ندارد و کدها را نشان نمیدهد.
الان دقیقا نمیدانم مشکل از کجاست؟!
اگر policy به درستی ثبت شده است پس چرا هیچ عکس العملی نشان نمیدهد!


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
1

@a.kian32
لطفا کدتون رو دفعه بعد درست بفرستید مبجور شدم خودم، ویرایش کنم !!!!
بنظر همچی در اینجا درست میاد !
در قسمت boot ایا مثل کد زیر هست ؟

    /**
     * Register any application authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        //
    }
}

amirkian
@a.kian32 4 سال پیش مطرح شد
0

ممنون بابت ویرایش کدها- من بلد نبودم اینجا چطوری ویرایش بزنم.
بله دقیقا به همین صورت است
ولی من نمیدانم چرا کار نمیکند و اینکه چطور میتوانم تست کنم و بفهمم مشکل از کجاست!


amirkian
@a.kian32 4 سال پیش مطرح شد
0

برای تست policy برای اینکه ببینیم که اصلا کار میکند یا نه
میتوانیم داخل کدهای متد مربوطه بجای اینکه چیزی را return کنیم
بنویسیم
dd('somthing')
تا ببینیم اصلا چیزی نمایان میشود یا نه
و نکته ی دوم اینکه policy ها روی مدل ها کار میکنند و حتما نیاز است که
یک شی از مدل مربوطه به درستی ساخته شده باشد تا بتوانیم از policy های مورد نظر آن کلاس
استفاده کنیم.
تجربیات بنده بعد از 3 روز درگیری


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام