راکت
حل شده

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

5 پاسخ

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

amirkian
amirkian
@a.kian32
ثبت پرسش جدید

پاسخ‌ها

5
amirkian
amirkian
@a.kian32
بهترین پاسخ

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

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

amirkian
amirkian
@a.kian32

سلام
ببینید من 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

تخصص: طراح و برنامه نویس

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

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

        //
    }
}
amirkian
amirkian
@a.kian32

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

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

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