نسخه:

بازدیدها و پاسخ ها

پاسخ های اساسی

رشته های برگشتی از مسیرها

Route::get('/', function()
{
return 'Hello World';
});

ایجاد پاسخ های سفارشی

یک Response نمونه از Symfony\Component\HttpFoundation\Response کلاس به ارث می‌برد و روش‌های مختلفی را برای ساخت پاسخ‌های HTTP ارائه می‌کند.

$response = Response::make($contents, $statusCode);
 
$response->header('Content-Type', $value);
 
return $response;

اگر نیاز به دسترسی به متدهای کلاس دارید Response ، اما می خواهید یک view را به عنوان محتوای پاسخ برگردانید، می توانید Response::view برای راحتی کار از روش استفاده کنید:

return Response::view('hello')->header('Content-Type', $type);

پیوست کردن کوکی ها به پاسخ ها

$cookie = Cookie::make('name', 'value');
 
return Response::make($content)->withCookie($cookie);

تغییر مسیرها

بازگشت یک تغییر مسیر

return Redirect::to('user/login');

بازگشت یک تغییر مسیر با داده های فلش

return Redirect::to('user/login')->with('message', 'Login Failed');

توجه: از آنجایی که with روش داده ها را به جلسه فلش می کند، می توانید داده ها را با استفاده از Session::get روش معمولی بازیابی کنید.

بازگشت یک تغییر مسیر به یک مسیر نامگذاری شده

return Redirect::route('login');

بازگشت یک تغییر مسیر به یک مسیر نامگذاری شده با پارامترها

return Redirect::route('profile', array(1));

بازگشت یک تغییر مسیر به یک مسیر نامگذاری شده با استفاده از پارامترهای نامگذاری شده

return Redirect::route('profile', array('user' => 1));

بازگشت یک تغییر مسیر به یک اقدام کنترلر

return Redirect::action('HomeController@index');

بازگشت یک تغییر مسیر به یک کنش کنترلر با پارامترها

return Redirect::action('UserController@profile', array(1));

برگرداندن یک تغییر مسیر به یک عملکرد کنترلر با استفاده از پارامترهای نامگذاری شده

return Redirect::action('UserController@profile', array('user' => 1));

بازدیدها

نماها معمولاً حاوی HTML برنامه شما هستند و راهی مناسب برای جداسازی منطق کنترلر و دامنه شما از منطق ارائه شما ارائه می دهند. نماها در app/views فهرست ذخیره می شوند.

یک نمای ساده می تواند چیزی شبیه به این باشد:

<!-- View stored in app/views/greeting.php -->
 
<html>
<body>
<h1>Hello, <?php echo $name; ?></h1>
</body>
</html>

این نمای ممکن است به صورت زیر به مرورگر بازگردانده شود:

Route::get('/', function()
{
return View::make('greeting', array('name' => 'Taylor'));
});

آرگومان دوم ارسال شده به View::make آرایه ای از داده ها است که باید در دسترس view قرار گیرد.

انتقال داده به نماها

// Using conventional approach
$view = View::make('greeting')->with('name', 'Steve');
 
// Using Magic Methods
$view = View::make('greeting')->withName('steve');

در مثال بالا متغیر $name از نمای قابل دسترسی است و حاوی Steve .

در صورت تمایل، می توانید آرایه ای از داده ها را به عنوان پارامتر دوم داده شده به make متد ارسال کنید:

$view = View::make('greetings', $data);

همچنین می‌توانید بخشی از داده را در همه نماها به اشتراک بگذارید:

View::share('name', 'Steve');

ارسال یک نمای فرعی به یک نما

گاهی اوقات ممکن است بخواهید یک نما را به نمای دیگری منتقل کنید. به عنوان مثال، با توجه به یک نمای فرعی ذخیره شده در app/views/child/view.php ، می توانیم آن را به نمای دیگری مانند این ارسال کنیم:

$view = View::make('greeting')->nest('child', 'child.view');
 
$view = View::make('greeting')->nest('child', 'child.view', $data);

سپس نمای فرعی را می توان از نمای والد ارائه کرد:

<html>
<body>
<h1>Hello!</h1>
<?php echo $child; ?>
</body>
</html>

تعیین اینکه آیا دیدگاه وجود دارد

اگر نیاز به بررسی وجود نما دارید، از View::exists روش زیر استفاده کنید:

if (View::exists('emails.customer'))
{
//
}

نمایش composerان

View composer ها callback یا متدهای کلاسی هستند که هنگام رندر شدن یک view فراخوانی می شوند. اگر داده‌هایی دارید که می‌خواهید هر بار که آن نما در برنامه شما ارائه می‌شود، به یک نمای معین متصل شود، یک View Composer می‌تواند آن کد را در یک مکان واحد سازماندهی کند. بنابراین، composerان View ممکن است مانند "مدل های مشاهده" یا "ارائه کننده" عمل کنند.

تعریف View Composer

View::composer('profile', function($view)
{
$view->with('count', User::count());
});

اکنون هر بار که profile نما ارائه می شود، count داده ها به نما متصل می شوند.

همچنین می‌توانید یک View composer را به چندین نما به طور همزمان پیوست کنید:

View::composer(array('profile','dashboard'), function($view)
{
$view->with('count', User::count());
});

اگر ترجیح می دهید از یک composer مبتنی بر کلاس استفاده کنید که مزایای حل شدن از طریق برنامه IoC Container را فراهم می کند ، می توانید این کار را انجام دهید:

View::composer('profile', 'ProfileComposer');

یک کلاس view composer باید به این صورت تعریف شود:

class ProfileComposer {
 
public function compose($view)
{
$view->with('count', User::count());
}
 
}

تعریف چند composer

می توانید از این composers روش برای ثبت گروهی از composerان به طور همزمان استفاده کنید:

View::composers(array(
'AdminComposer' => array('admin.index', 'admin.profile'),
'UserComposer' => 'user',
'ProductComposer@create' => 'product'
));

توجه: هیچ قراردادی در مورد محل ذخیره کلاس های composer وجود ندارد. شما آزاد هستید که آنها را در هر مکانی ذخیره کنید تا زمانی که بتوان آنها را به صورت خودکار با استفاده از دستورالعمل های موجود در composer.json فایل خود بارگیری کرد.

مشاهده سازندگان

نمایش سازندگان تقریباً دقیقاً مانند composerان View کار می کنند. با این حال، آنها بلافاصله پس از نمایش نمونه، شلیک می شوند. برای ثبت یک View Creator، به سادگی از creator روش استفاده کنید:

View::creator('profile', function($view)
{
$view->with('count', User::count());
});

پاسخ های ویژه

ایجاد پاسخ JSON

return Response::json(array('name' => 'Steve', 'state' => 'CA'));

ایجاد پاسخ JSONP

return Response::json(array('name' => 'Steve', 'state' => 'CA'))->setCallback(Input::get('callback'));

ایجاد پاسخ دانلود فایل

return Response::download($pathToFile);
 
return Response::download($pathToFile, $name, $headers);

توجه: Symfony HttpFoundation، که دانلود فایل‌ها را مدیریت می‌کند، باید فایلی که دانلود می‌شود دارای نام فایل ASCII باشد.

ماکروهای پاسخگویی

اگر می خواهید یک پاسخ سفارشی تعریف کنید که بتوانید مجدداً در مسیرهای مختلف و کنترلرهای خود از آن استفاده کنید، می توانید از Response::macro روش زیر استفاده کنید:

Response::macro('caps', function($value)
{
return Response::make(strtoupper($value));
});

تابع macro یک نام را به عنوان اولین آرگومان خود و یک Closure را به عنوان دومین آرگومان خود می پذیرد. هنگام فراخوانی نام ماکرو در Response کلاس، بسته شدن ماکرو اجرا می شود:

return Response::caps('foo');

شما می توانید ماکروهای خود را در یکی از app/start فایل های خود تعریف کنید. از طرف دیگر، می توانید ماکروهای خود را در یک فایل جداگانه سازماندهی کنید که در یکی از start فایل های شما موجود است.