跟我学Laravel之视图 & Response
这篇文章主要介绍了Laravel框架的视图 Response,非常简单实用,需要的朋友可以参考下
基本Response
从路由中返回字符串
复制代码 代码如下:
Route::get('/', function()
{
return 'Hello World';
});
创建自定义Response
Response类继承自Symfony\Component\HttpFoundation\Response类,提供了多种方法用于构建HTTP Response。
复制代码 代码如下:
$response = Response::make($contents, $statusCode);
$response->header('Content-Type', $value);
return $response;
如果需要访问 Response 类的方法,但又要返回一个视图作为响应的内容,通过使用 Response::view 方法可以很容易实现:
复制代码 代码如下:
return Response::view('hello')->header('Content-Type', $type);
在Response中添加Cookie
复制代码 代码如下:
$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中,通过Session::get 方法即可获取该数据。
返回一个重定向至命名路由
return Redirect::route('login');
返回一个重定向至带有参数的命名路由
return Redirect::route('profile', array(1));
返回一个重定向至带有命名参数的命名路由
return Redirect::route('profile', array('user' => 1));
返回一个重定向至控制器Action
return Redirect::action('HomeController@index');
返回一个重定向至控制器Action并带有参数
return Redirect::action('UserController@profile', array(1));
返回一个重定向至控制器Action并带有命名参数
return Redirect::action('UserController@profile', array('user' => 1));
视图
视图通常包含应用中的HTML代码,为分离表现层与控制器和业务逻辑提供了便利。视图存放于app/views目录。
一个简单视图案例:
复制代码 代码如下:
Hello,
通过如下方法来返回该视图到浏览器:
复制代码 代码如下:
Route::get('/', function()
{
return View::make('greeting', array('name' => 'Taylor'));
});
传递给View::make方法的第二个参数是一个数组,它将被传递给视图。
传递数据给视图
复制代码 代码如下:
// Using conventional approach
$view = View::make('greeting')->with('name', 'Steve');
// Using Magic Methods
$view = View::make('greeting')->withName('steve');
在上面的案例中,$name变量在视图内是可以访问的,其值为Steve。
你还可以在所有视图同共享同一数据:
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);
在父视图就可以输出该子视图了:
复制代码 代码如下:
Hello!
视图合成器
视图合成器可以是回调函数或者类方法,它们在创建视图时被调用。如果你想在应用程序中,每次创建视图时都为其绑定一些数据,使用视图合成器可以将代码组织到一个地方。因此,视图合成器就好像是 “视图模型”或者是“主持人”。
定义一个视图合成器
复制代码 代码如下:
View::composer('profile', function($view)
{
$view->with('count', User::count());
});
现在,每次创建profile视图时,count都会被绑定到视图中。
你也可以为多个视图同时绑定一个视图合成器:
复制代码 代码如下:
View::composer(array('profile','dashboard'), function($view)
{
$view->with('count', User::count());
});
如果你更喜欢使用基于类的视图合成器,IoC container可以提供更多便利,如下所示:
View::composer('profile', 'ProfileComposer');
视图合成器类定义如下:
复制代码 代码如下:
class ProfileComposer {
public function compose($view)
{
$view->with('count', User::count());
}
}
注意,,没有规定视图合成器类存放在哪里。因此,你可以任意存放,只要能在composer.json文件中指定位置并自动加载即可。
视图创建器
视图 创建器 与视图合成器的工作方式几乎完全相同;区别在于当一个视图被实例化后就会立即触发视图创建器。视图创建器通过 creator 方法方便地定义:
复制代码 代码如下:
View::creator('profile', function($view)
{
$view->with('count', User::count());
});
特殊Response
创建一个JSON Response
return Response::json(array('name' => 'Steve', 'state' => 'CA'));
创建一个JSONP Response
return Response::json(array('name' => 'Steve', 'state' => 'CA'))->setCallback(Input::get('callback'));
创建一个文件下载Response
return Response::download($pathToFile);
return Response::download($pathToFile, $status, $headers);
注意: Symfony HttpFoundation 用于处理文件下载,要求下载的文件的文件名只包含 ASCII 字符。
Response 宏
如果希望自定义一个 response ,以便在你应用程序中的许多路由和控制器中进行重用,可以使用 Response::macro 方法:
复制代码 代码如下:
Response::macro('caps', function($value)
{
return Response::make(strtoupper($value));
});
macro 方法接受两个参数,一个指定和名称和一个闭包。当通过 Response 类调用该名称的宏时,闭包就会被执行:
return Response::caps('foo');
你可以在 app/start 目录里的文件中定义宏。或者,你也可以通过一个单独的文件组织你的宏,并将该文件包含至某个 start 文件中。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel 이메일 전송이 실패 할 때 반환 코드를 얻는 방법. Laravel을 사용하여 응용 프로그램을 개발할 때 종종 확인 코드를 보내야하는 상황이 발생합니다. 그리고 실제로 ...

laravel 일정 작업 실행 비 응답 문제 해결 Laravel의 일정 작업 일정을 사용할 때 많은 개발자 가이 문제에 직면합니다 : 스케줄 : 실행 ...

Laravel의 이메일을 처리하지 않는 방법은 LaRavel을 사용하는 것입니다.

DCAT를 사용할 때 DCATADMIN (LARAVEL-ADMIN)에서 데이터를 추가하려면 사용자 정의의 테이블 기능을 구현하는 방법 ...

Laravel - 덤프 서버 - Laravel 덤프 서버는 Laravel 5.7 버전과 함께 제공됩니다. 이전 버전에는 덤프 서버가 포함되어 있지 않습니다. 덤프 서버는 laravel/laravel 작곡가 파일의 개발 종속성이 됩니다.

Laravel 프레임 워크 및 Laravel 프레임 워크 및 Redis를 사용할 때 Redis 연결을 공유하는 데 영향을 줄 수 있습니다. 개발자는 문제가 발생할 수 있습니다. 구성을 통해 ...

Laravel 다중 테넌트 확장 패키지 패키지 패키지 패키지 패키지 Stancl/Tenancy, ...

Laravel - 액션 URL - Laravel 5.7에는 "호출 가능한 액션 URL"이라는 새로운 기능이 도입되었습니다. 이 기능은 액션 메소드에서 문자열을 허용하는 Laravel 5.6의 기능과 유사합니다. Laravel 5.7에 도입된 새로운 구문의 주요 목적은
