现在的框架基本上都是MVC的,那Laravel项目是如何通过访问url请求,来最终把处理好的数据,显示到页面上的呢?
首先我们了解一下之前Laravel项目的目录结构:
. ├── app.php ├── Http ├── Controllers ├── bootstrap ├── config ├── database ├── public ├── resources ├── views ├── welcome.blade.php ├── routes ├── web.php ├── storage ├── tests ├── vendor ├── .env ├── .env.example ├── artisan ├── composer.json ├── composer.lock ├── package.json ├── server.php └── webpack.mix.js
我们使用Laravel项目的artisan命令行工具先启动一下项目,
D:\software\wamp64\www\laravel5>php artisan serve
然后通过访问浏览器访问 localhost:8000 url,即可看到之前的欢迎界面。
我们打开 web.php文件,可以看到,注册的路由。默认的显示一个是:注册了一个当我们访问 项目根目录时,显示welcome的页面。
Route::get('/', function () { return view('welcome'); });
我们可以看到 有views 这样一个文件夹下,字面理解 就是试图,下面有一个文件 welcome.blade.php,我么打开简单的修改一下页面显示内容。 给Laravel 新增加一个超链接,
<a href="https://cksite.cn">Laravel</a>
刷新页面,从新访问一下,可以看到 左下角的超链接。
从上面,我们可以看出视图页面的是以 .blade.php 为后缀的php文件。
然后现在在注册一个路由,实现当我们访问 about (就像企业站的关于我们) 时,自动显示 about页面的内容:
web.php新增加:
Route::get('/about', function () { return view('sites.about'); });
views文件夹下,新建一个sites文件夹,里面新建一个视图页面 about.blade.php,简单填写html的内容;
<div class="flex-center position-ref full-height"> cuikai about </div>
浏览器访问上述 路由:http://localhost:8000/about ,即可看到刚才新写的页面信息。
要注意的是:上面访问的路由地址 文件夹也可以写成用 斜杠 / 的形式:访问结果是一样的。
Route::get('/about', function () { return view('sites/about'); });
到这,我们发现控制器在哪呢?并且有时我们写api或者需要输出更复杂的数据结构,怎么输出给前台呢?并且能不能通过访问控制器里面的方法来访问该页面呢?
我们可以借助artisan命令行工具 去创建一个控制器,执行一下命令,可以看到 app\Http\Controllers 目录下新生成了一个SiteController.php文件,这就是我们的控制器!!!
D:\software\wamp64\www\laravel5>php artisan make:controller SiteController Controller created successfully.
编辑SiteController.php文件,添加一个index方法:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class SiteController extends Controller { public function index() { return view("sites.about"); } }
这时候再修改一下我们的路由 web.php:
Route::get('/', 'SiteController@index');
这样,当我们访问项目根目录就会自动访问 SiteController 控制器下的index方法,并会给我们显示之前的 about 界面。
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn