Laravel中Response如何使用-創(chuàng)新互聯(lián)

Laravel中Response如何使用,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的余慶網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

基本Response

從路由中返回字符串

復(fù)制代碼 代碼如下:


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


創(chuàng)建自定義Response

Response類繼承自Symfony\Component\HttpFoundation\Response類,提供了多種方法用于構(gòu)建HTTP Response。

復(fù)制代碼 代碼如下:


$response = Response::make($contents, $statusCode);

$response->header('Content-Type', $value);

return $response;


如果需要訪問 Response 類的方法,但又要返回一個視圖作為響應(yīng)的內(nèi)容,通過使用 Response::view 方法可以很容易實(shí)現(xiàn):

復(fù)制代碼 代碼如下:


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


在Response中添加Cookie

復(fù)制代碼 代碼如下:


$cookie = Cookie::make('name', 'value');

return Response::make($content)->withCookie($cookie);


重定向

返回一個重定向

return Redirect::to('user/login');
返回一個帶有數(shù)據(jù)的重定向

return Redirect::to('user/login')->with('message', 'Login Failed');
注意: with 方法將數(shù)據(jù)寫到了Session中,通過Session::get 方法即可獲取該數(shù)據(jù)。
返回一個重定向至命名路由

return Redirect::route('login');
返回一個重定向至帶有參數(shù)的命名路由

return Redirect::route('profile', array(1));
返回一個重定向至帶有命名參數(shù)的命名路由

return Redirect::route('profile', array('user' => 1));
返回一個重定向至控制器Action

return Redirect::action('HomeController@index');
返回一個重定向至控制器Action并帶有參數(shù)

return Redirect::action('UserController@profile', array(1));
返回一個重定向至控制器Action并帶有命名參數(shù)

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

視圖

視圖通常包含應(yīng)用中的HTML代碼,為分離表現(xiàn)層與控制器和業(yè)務(wù)邏輯提供了便利。視圖存放于app/views目錄。

一個簡單視圖案例:

復(fù)制代碼 代碼如下:


<!-- View stored in app/views/greeting.php -->

<html>
    <body>
        <h2>Hello, <?php echo $name; ?></h2>
    </body>
</html>


通過如下方法來返回該視圖到瀏覽器:

復(fù)制代碼 代碼如下:


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


傳遞給View::make方法的第二個參數(shù)是一個數(shù)組,它將被傳遞給視圖。

傳遞數(shù)據(jù)給視圖

復(fù)制代碼 代碼如下:


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

// Using Magic Methods
$view = View::make('greeting')->withName('steve');


在上面的案例中,$name變量在視圖內(nèi)是可以訪問的,其值為Steve。

你還可以在所有視圖同共享同一數(shù)據(jù):

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


向視圖傳遞子視圖

或許你可能想將一個視圖放入到另一個視圖中。例如,將存放在app/views/child/view.php文件中的子視圖傳遞給另一視圖,如下:

復(fù)制代碼 代碼如下:


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

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


在父視圖就可以輸出該子視圖了:

復(fù)制代碼 代碼如下:


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


視圖合成器

視圖合成器可以是回調(diào)函數(shù)或者類方法,它們在創(chuàng)建視圖時被調(diào)用。如果你想在應(yīng)用程序中,每次創(chuàng)建視圖時都為其綁定一些數(shù)據(jù),使用視圖合成器可以將代碼組織到一個地方。因此,視圖合成器就好像是 “視圖模型”或者是“主持人”。

定義一個視圖合成器

復(fù)制代碼 代碼如下:


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


現(xiàn)在,每次創(chuàng)建profile視圖時,count都會被綁定到視圖中。

你也可以為多個視圖同時綁定一個視圖合成器:

復(fù)制代碼 代碼如下:


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


如果你更喜歡使用基于類的視圖合成器,IoC container可以提供更多便利,如下所示:

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


視圖合成器類定義如下:

復(fù)制代碼 代碼如下:


class ProfileComposer {

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

}


注意,沒有規(guī)定視圖合成器類存放在哪里。因此,你可以任意存放,只要能在composer.json文件中指定位置并自動加載即可。

視圖創(chuàng)建器

視圖 創(chuàng)建器 與視圖合成器的工作方式幾乎完全相同;區(qū)別在于當(dāng)一個視圖被實(shí)例化后就會立即觸發(fā)視圖創(chuàng)建器。視圖創(chuàng)建器通過 creator 方法方便地定義:

復(fù)制代碼 代碼如下:


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


特殊Response

創(chuàng)建一個JSON Response

return Response::json(array('name' => 'Steve', 'state' => 'CA'));
創(chuàng)建一個JSONP Response

return Response::json(array('name' => 'Steve', 'state' => 'CA'))->setCallback(Input::get('callback'));
創(chuàng)建一個文件下載Response

return Response::download($pathToFile);

return Response::download($pathToFile, $status, $headers);
注意: Symfony HttpFoundation 用于處理文件下載,要求下載的文件的文件名只包含 ASCII 字符。

Response 宏

如果希望自定義一個 response ,以便在你應(yīng)用程序中的許多路由和控制器中進(jìn)行重用,可以使用 Response::macro 方法:

復(fù)制代碼 代碼如下:


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


macro 方法接受兩個參數(shù),一個指定和名稱和一個閉包。當(dāng)通過 Response 類調(diào)用該名稱的宏時,閉包就會被執(zhí)行:

return Response::caps('foo');
你可以在 app/start 目錄里的文件中定義宏?;蛘撸阋部梢酝ㄟ^一個單獨(dú)的文件組織你的宏,并將該文件包含至某個 start 文件中。

關(guān)于Laravel中Response如何使用問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

文章標(biāo)題:Laravel中Response如何使用-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://muchs.cn/article38/csjcsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)