Kaptain Kitty
انتشار :۲۸ دی ۱۳۹۳
بازدید :613 بار

پیشنهاد می شود ابتدا قسمت اول این مقاله را مطالعه فرمایید

روابط ساده

هنگامی که بخواهید روابط را تعریف کنید چه کارهایی انجام می دهید؟ برای مثال اگر یک task به یک کاربر تعلق داشته باشد. چطور می توانیم آن را در فریم ورک Laravel نمایش دهیم؟ با این فرض که جداول ضروری دیتابیس تنظیم شده اند، ما فقط باید مدل های مربوطه ی Eloquent را تنظیم کنیم:

[codesyntax lang=”php”]

class Task extends Eloquent {
    public function user()
    {
        return $this->belongsTo('User');
    }
}
 
class User extends Eloquent {
    public function tasks()
    {
        return $this->hasMany('Task');
    }
}

[/codesyntax]

با این کد، هدف مورد نظر ما انجام می شود. می خواهیم تمام task های کاربر را با id=1 به دست آوریم. می توان این کار را با دو خط کد انجام داد:

[codesyntax lang=”php”]

$user = User::find(1);
$tasks = $user->tasks;

[/codesyntax]

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

[codesyntax lang=”php”]

$task = Task::find(1);
$user = $task->user;

[/codesyntax]

 

الصاق Form Model

اغلب این که بتوان یک form را به یک model متصل کرد مفید است. مثال این قابلیت زمانی است که می خواهید یک رکورد را در دیتابیس خود ویرایش کنید. با استفاده از قابلیت form model binding (یا الصاق form model) می توانیم بلافاصله فیلد های فرم را با مقادیری که از ردیف مربوطه در جدول به دست آورده ایم پر کنیم.

[codesyntax lang=”php”]

{{ Form::model($order) }}
    <div>
        {{ Form::label('title', 'Title:') }}
        {{ Form::text('title') }}
    </div>
 
    <div>
        {{ Form::label('description', 'Description:') }}
        {{ Form::textarea('description') }}
    </div>
{{ Form::close() }}

[/codesyntax]

 

به دلیل این که این form اکنون به یک نمونه ی جدید Order مرتبط شده است، ورودی ها مقادیر صحیح را از جدول نمایش می دهند.

Catch کردن کوئری های دیتابیس

کوئری های فراوانی برای دیتابیس وجود دارد و اپلیکیشن شما خیلی سریع می تواند شبیه یک کلاف در هم پیچیده شود. خوشبختانه فریم ورک Laravel یک مکانیسم ساده برای catch کردن این کوئری ها را با استفاده از فراخوانی یک متد ارائه می دهد.

می خواهیم همه ی question ها را از دیتابیس به دست بیاوریم اما کوئری را catch کنیم زیرا به نظر نمی رسد که این جدول به طور مرتب آپدیت شود:

[codesyntax lang=”php”]

$questions = Question::remember(60)->get();

[/codesyntax]

 

به همین سادگی. حالا برای درخواست هایی که در یک ساعت آینده برای یک صفحه ارسال می شوند، این کوئری به صورت catch شده باقی می ماند و دیتابیس بدون استفاده باقی خواهد ماند.

View Composer

شما بعضا با موقعیت هایی مواجه می شوید که چندین view نیاز به یک متغیر مشخص یا بخشی از یک داده دارند. یک مثال خوب از این حالت مربوط به یک نوار navigation است که لیستی از tag ها را نشان می دهد.

برای به حداقل رساندن کنترلر ها، فریم ورک Laravel یک قابلیت به نام view composer را برای مدیریت مواردی از این قبیل ارائه می دهد:

[codesyntax lang=”php”]

View::composer('layouts.nav', function($view)
{
    $view->with('tags', ['tag1', 'tag2']);
});

[/codesyntax]

 

با این تکه کد، هر زمانی که view مربوط به layouts/nav.blade.php  بارگذاری شود، به متغیر $tags که برابر با آرایه ی ارائه شده می باشد، دسترسی خواهد داشت.

اعتبارسنجی ساده (Authentication)

فریم ورک Laravel یک روش بسیار ساده برای اعتبار سنجی ارائه می دهد. خیلی ساده یک آرایه از اطلاعات شخصی کاربر که از یک فرم لاگین واکشی شده است را به Auth::attempt() اضافه کنید. اگر مقادیر به دست آمده با آنچه که در جدول users ذخیره شده است منطبق باشد، کاربر بلافاصله لاگین می شود.

[codesyntax lang=”php”]

$user = [
    'email' => 'email',
    'password' => 'password'
];
 
if (Auth::attempt($user))
{
    // user is now logged in!
    // Access user object with Auth::user()
}

[/codesyntax]

اگر نیاز به log out کردن کاربر داشته باشیم چطور؟ یعنی زمانی که  /logout URI  مورد استفاده قرار می گیرد؟ این کار هم به سادگی با کد زیر انجام می شود.

[codesyntax lang=”php”]

Route::get('logout', function()
{
    Auth::logout();
     
    return Redirect::home();
});

[/codesyntax]

برچسب‌ها, , , , , , , ,

مطالب مرتبط

در این قسمت بیشتر می خواهیم زبان برنامه نویسی PHP را بررسی کنیم و ببینیم که غیر از تعربف و تمجید های تکراری که در تمام وبسایت ها شاهد آن هستیم، چه نقاط ضعفی هم دارد. مقایسه ی PHP + Apache Stack و پلت فرم Node.js مقایسه ی این دو مانند مقایسه ی سیب و پرتقال است. […]

در چهار قسمت قبلی نکات و موارد بسیاری را در رابطه با فریم ورک محبوب و قدرتمند لاراول (Laravel) برای php کار ها عنوان کردیم. این قسمت پنجمین و آخرین قسمت از بررسی فریم ورک laravel است . امیدواریم با مطالعه ی این مقالات و کسب دانش پایه و آگاهی از نکات ضعف و قوت فریم […]

حتما در قسمت های گذشته ی این مبحث با نکات قوت فریم ورک محبوب لاراول آشنا شده اید. پیشنهاد می شود ابتدا قسمت های گذشته را مطالعه کنید تا بطور کامل با فریم ورک laravel آشنا شوید. در این مقاله هم می خواهیم با تعدادی دیگر از امکانات این فریم ورک فوق العاده آشنا شویم. […]

در قسمت های گذشته مطالبی در مورد امکانات فوق العاده ی فریم ورک لاراول مشاهده و مطالعه کردید. در این قسمت هم میخواهیم به تعدادی دیگر از امکانات مورد نظر در فریم ورک لاراول بپردازیم و شما را با بخشی دیگر از این فریم ورک فوق العاده عالی آشنا کنیم. پیشنهاد میکنیم قبل از مطالعه […]

نظراتتان را برایمان بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

مطالب ما تو این شبکه های اجتماعی هم پخش میشه