查看“基本功能”的源代码
←
基本功能
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看并复制此页面的源代码:
==路由== [http://blog.csdn.net/alanjager/article/details/51389758 简单的路由,RouteServiceProvider功能介绍。] <source lang='php'> // 简单路由 Route::get('/', function () { return view('welcome'); }); //为多重动作注册路由 Route::match(['get', 'post'], '/get-post', function () { return 'get and post'; }); Route::any('foo', function () { return 'any foo ' . url('foo') . ' ' . url('router'); }); //路由参数 Route::get('posts/{pid}/comments/{comment?}', function ($pId, $commentId = 'empty') { return "postId = $pId, comments = $commentId"; }); //正则表达式限制参数。也可为参数设定全局规则pattern filter。 Route::get('user/{id}/{name?}', function ($id, $name = 'empty') { return "userId = $id, name = $name"; })->where(['id' => '[0-9]?', 'name' => '[a-z]+']); //命名路由 Route::get('user/list', ['as' => 'userList', function () { return 'name router: ' . route('userList'); }]); Route::get('user/info/{id?}', 'UserController@UserInfo')->name('userInfo'); //路由群组:中间件、命名空间、子域名、前缀 Route::group([ /*'middleware' => 'auth',*/ 'namespace' => 'Member', 'domain' => '{account}.tomtalk.net', 'prefix' => 'member'], function () { Route::get('{id?}', 'MemberController@detail'); }); //CSRF保护:试了一下,还是不知道怎么用。 //路由模型绑定 Route::get('user/model/{user}', 'UserController@UserModel')->name('userModel'); //请求方法伪造 - echo method_field('PUT') //抛出404错误 - abort(404) </source> ==中间件== HTTP中间件提供了一个方便的机制来过滤进入应用程序的HTTP请求。所有的中间件都放在app/Http/Middleware目录内。 ;创建一个中间件 <source lang='bash'> php artisan make:middleware OldMiddleware </source> <source lang='php'> public function handle($request, Closure $next) { if ($request->input('age') <= 200) { return redirect('home'); } return $next($request); } </source> ;前置中间件/后置中间件 <source lang='php'> public function handle($request, Closure $next) { // 运行动作 return $next($request); } public function handle($request, Closure $next) { $response = $next($request); // 运行动作 return $response; } </source> ;全局中间件 若是希望每个HTTP请求都经过一个中间件,只要将中间件的类加入到app/Http/Kernel.php的$middleware属性清单列表中。 ;为路由指派中间件 ;中间件参数 ;Terminable中间件 有些时候中间件需要在HTTP响应被发送到浏览器之后才运行,例如,Laravel内置的「session」中间件存储的session数据是在响应被发送到浏览器之后才进行写入的。想要做到这一点,你需要定义中间件为「terminable」 ==控制器== ===基础控制器=== <source lang='php'> //一旦你指定了控制器路由的名称,则可以很容易地生成能实现该行为的URL。 $url = route('name'); //你也可以使用action辅助函数生成指向控制器行为的URL。 $url = action('FooController@method'); //你可以使用Route facade的currentRouteAction方法取到正在运行的控制器行为名称。 $action = Route::currentRouteAction(); </source> ===控制器中间件=== 可将中间件指定给控制器路由,例如: <source lang='php'> Route::get('profile', [ 'middleware' => 'auth', 'uses' => 'UserController@showProfile' ]); </source> 不过,在控制器构造器中指定中间件会更为灵活。你可以很容易地将中间件指定给控制器。你甚至可以对中间件作出限制,仅将它提供给控制器类中的某些方法。 <source lang='php'> class UserController extends Controller { public function __construct() { $this->middleware('auth'); $this->middleware('log', ['only' => ['fooAction', 'barAction']]); $this->middleware('subscribed', ['except' => ['fooAction', 'barAction']]); } } </source> ===RESTful资源控制器=== <source lang='php'> Route::resource('photos', 'PhotosController'); //部分资源路由 Route::resource('photos', 'PhotosController', ['only' => ['index', 'show']]); Route::resource('photos', 'PhotosController', ['except' => ['create', 'store', 'update', 'destroy']]); //命名资源路由 Route::resource('photos', 'PhotosController', ['names' => ['create' => 'photo.build']]); //嵌套资源 Route::resource('photos.comments', 'PhotoCommentController'); //附加资源控制器 //如果想在资源控制器中默认的资源路由之外加入其它额外路由,则应该在调用Route::resource之前定义这些路由。否则,由resource方法定义的路由可能会不小心覆盖你附加的路由: Route::get('photos/popular', 'PhotosController@method'); Route::resource('photos', 'PhotosController'); //隐式控制器 Route::controller('users', 'UserController'); </source> ==请求== ===获取请求=== 要通过依赖注入的方式获取HTTP请求的实例,就必须在控制器的构造器或方法中,使用Illuminate\Http\Request类型提示。 <source lang='php'> use Illuminate\Http\Request; class UserController extends Controller { public function store(Request $request) { $name = $request->input('name'); // } } </source> 如果控制器方法也有输入数据是从路由参数传入的,只需将路由参数置于其它依赖之后。 <source lang='php'> public function update(Request $request, $id) { // } //基本请求信息 $uri = $request->path(); //返回请求的URI $url = $request->url(); //获取完整的网址 //获取请求的方法 $method = $request->method(); if ($request->isMethod('post')) { // } </source> ===获取输入数据=== <source lang='php'> $name = $request->input('name'); $name = $request->name; //使用属性访问用户输入 //你可以在input方法的第二个参数中传入一个默认值。当请求的输入数据不存在于此次请求时,就会返回默认值: $name = $request->input('name', 'Sally'); //确认是否有输入值 if ($request->has('name')) { // } //获取所有输入数据 $input = $request->all(); //获取部分输入数据 $input = $request->only(['username', 'password']); $input = $request->only('username', 'password'); $input = $request->except(['credit_card']); $input = $request->except('credit_card'); //将输入数据闪存至Session $request->flash(); $request->flashOnly('username', 'email'); $request->flashExcept('password'); //闪存输入数据至Session后重定向 return redirect('form')->withInput(); return redirect('form')->withInput($request->except('password')); //获取旧输入数据 $username = $request->old('username'); {{ old('username') }} </source> ===Cookies=== <source lang='php'> $value = $request->cookie('name'); //将新的 Cookie 附加到响应 $response = new Illuminate\Http\Response('Hello World'); $response->withCookie(cookie('name', 'value', $minutes)); return $response; //如果要创建一个可长期存在,为期五年的 cookie。 $response->withCookie(cookie()->forever('name', 'value')); </source> ===上传文件=== <source lang='php'> $file = $request->file('photo'); //确认上传的文件是否存在: if ($request->hasFile('photo')) { // } //确认上传的文件是否有效 if ($request->file('photo')->isValid()) { // } //移动上传的文件 $request->file('photo')->move($destinationPath); $request->file('photo')->move($destinationPath, $fileName); </source> ==视图== ===判断view是否存在=== <source lang='php'> // 这个可以判断相应的view是不是存在的 if (View::exists('pages.index')) return view('pages.index'); else return 'No view available'; </source> ===向 view 传递数据=== <source lang='php'> // 表示 $users 这个变量会传递到view中。 return view('admin.users.index', compact('users')); //要传递两个变量,分别是text和name。 return view('pages.index', ['text' => '<b>Laravel</b>', 'name' => 'Nicole']); </source> ===另一种向 view 传递数据的方法=== <source lang='php'> </source> ===视图组件=== 用于每次渲染某些视图时绑定数据。 <source lang='php'> view()->composer(['profile', 'dashboard'], 'App\Http\ViewComposers\MyViewComposer'); </source> 视图的 composer 方法可以接受 * 作为通配符,所以你可以对所有视图附加 composer。如下: <source lang='php'> view()->composer('*', function ($view) { // }); </source> ===视图创建者=== 视图创建者几乎和视图组件运作方式一样;只是视图创建者会在视图初始化后就立即运行,而不是像视图组件一样要一直等到视图即将被渲染完成时才会被运行。要注册一个创建者,只要使用 creator 方法即可: <source lang='php'> view()->creator('profile', 'App\Http\ViewCreators\ProfileCreator'); </source> ==blade模板== 所有 Blade 视图都会被编译缓存成普通的 PHP 代码,一直到它们被更改为止。这代表 Blade 基本不会对你的应用程序生成负担。 <source lang='php'> @extends('layouts.master') @section('title', 'LaravelExample') @section('sidebar') @parent <div> sidebar </div> @endsection @section('content') <h3>变量的使用</h3> <p>目前的 UNIX 时间戳为 {{ $time }}。 <p>目前的 UNIX 时间戳为 {{ time() }}。 <p>目前的 UNIX 时间戳为 @{{ time() }}。 <p>My name is {{ $name or 'Default' }}. <p>My name is {{ $html or 'html' }}. <p>My name is {!! $html or 'html' !!}. {{-- @符号如何显示 --}} <h3>include</h3> @include('usersList', ['users' => $users]) <h3>each</h3> @each('userInfo', $users, 'name') {{-- 服务注入 --}} <h3>自定义模板指令</h3> @datetime(new Datetime()) @endsection </source> ===服务注入=== @inject命令可以取出Laravel服务容器中的服务。传递给@inject的第一个参数为置放该服务的变量名称,而第二个参数为你想要解析的服务的类或是接口的名称: <source lang="php"> @inject('metrics', 'App\Services\MetricsService') <div> 每月收入:{{$metrics->monthlyRevenue()}}。 </div> </source>
返回
基本功能
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息