laravel学习笔记(二)视图与路由
laravel中视图的用途是用来存放应用程序中HTML内容,并且能够将你的控制器层(或应用逻辑层)与展现层分开。视图文件目录为 resources/views ,示例视图如下:
1、文件名:视图名.blade.php
2、视图获取:
return view('文件夹.视图名');
如需传递参数到视图中,可以通过传递数组的方式传递,并在视图中通过blade模板语言打印出来,如下:
return view('文件夹.视图名',['参数名'=>'参数值']);
如只需要传递特定数据而非一个臃肿的数组到视图文件,也可以使用with辅助函数,如下:
return view('文件夹.视图名')->with('参数名', '参数值');
如需将特定的数据共享给应用程序中所有的视图,可以通过View Facade的share方法,如下:
View::share('参数名', '参数值');
此视图文件位置:resources/views/文件夹/视图名.blade.php,内容如下
<html> <body> <h1>Hello, {{ $参数名}}</h1> </body> </html>
3、路由中设置视图查询
在routes/web.php中按如下方式配置,控制页面默认显示、一级路径显示和二级路径显示,如果视图不存在,则跳转到自定义的404视图中。
下方代码中判断视图是否存在的方法View::exists也可以用view()->exists来代替
Route::get('/', function() { if (View::exists('index')) { return view('index'); } else { return redirect('error/404'); } }); Route::get('{viewname}', function($viewname) { if (View::exists($viewname)) { return view($viewname); } else { return redirect('error/404'); } }); Route::get('{folder}/{viewname}', function($folder, $viewname) { if (View::exists($folder . '.' . $viewname)) { return view($folder . '.' . $viewname); } else { return redirect('error/404'); } });
为避免用户输入了不存在的路由跳转(如输入了三级路径),在app/Exceptions/Handler.php中设置异常处理
1)引用相应的异常类型文件路径
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
2)render中增加异常类型判断
public function render($request, Exception $exception) { if ($exception instanceof MethodNotAllowedHttpException || $exception instanceof NotFoundHttpException) { return redirect('error/404'); } return parent::render($request, $exception); }