天天看点

Laravel MVC的基本流程Laravel5常用的包 github.com

laravel mvc框架

Laravel MVC的基本流程Laravel5常用的包 github.com

http://www.golaravel.com/download/  

下载镜像优化版:基于laravel 官方 github 仓库源码的基础上安装了依赖库(vendor),页面打开巨慢的问题我们把所有引用的google字体全部删掉了等。

我们说说laravel中model,controller,views的工作流程,也就是下面这个顺序:

Laravel MVC的基本流程Laravel5常用的包 github.com

1.注册路由 ---> 2.创建控制器 ---> 3. 控制器中获取数据库数据 ---> 4.在视图中展示数据  

1注册路由,我们在<code>app/http/routes.php</code>中注册了我们首页的路由:<code></code>

Laravel MVC的基本流程Laravel5常用的包 github.com

route::get('/', 'articlecontroller@index'); //首页  

route::get('articles/{id}', 'articlecontroller@show'); //get路由  

route::post('article/update', 'articlecontroller@update'); //post路由  

route::resource('photo', 'photocontroller'); //restful  

可以直接使用这个路由,所以我们可以进入下一步。

2创建控制器,创建控制器的时候你可以手动创建,不过还是推荐使用artisan这个命令行工具,在项目目录之下(项目中的artisan文件对应的目录),命令行执行:

Laravel MVC的基本流程Laravel5常用的包 github.com

php artisan make:controller articlecontroller --plain  

//php artisan make:controller photocontroller --resource //5.2 restful  

这里需要说明的是<code>--plain</code>这个参数表明只要一个简单的controller,里面不需要生成一堆如<code>show()</code>,<code>create()</code>等方法。

创建模型,首先我们要新建一张表来存储 article,命令行运行

Laravel MVC的基本流程Laravel5常用的包 github.com

php artisan make:model models/article  

成功以后,修改 migration 文件database/migrations/***_create_articles_table.php 的相应位置为:

Laravel MVC的基本流程Laravel5常用的包 github.com

schema::create('articles', function(blueprint $table)  

{  

    $table-&gt;increments('id');  

    $table-&gt;string('url')-&gt;comment('回调通知地址');  

    $table-&gt;integer('times')-&gt;default(0)-&gt;index()-&gt;comment('通知次数');  

    $table-&gt;string('params')-&gt;comment('通知参数');  

    $table-&gt;tinyinteger('is_success')-&gt;default(0)-&gt;index()-&gt;comment('是否通知成功');  

    $table-&gt;timestamps();  

});  

之后运行:

Laravel MVC的基本流程Laravel5常用的包 github.com

php artisan migrate  

去数据库里瞧瞧,articles 表已经躺在那儿啦。模型中加入

Laravel MVC的基本流程Laravel5常用的包 github.com

&lt;?php namespace app\models;  

use illuminate\database\eloquent\model;  

class article extends model {  

    protected $table = 'articles'; //添加数据库表名  

    public $timestamps = false;  //关掉laravel内置时间戳  

}  

 然后再调用模型

Laravel MVC的基本流程Laravel5常用的包 github.com

class articlecontroller extends controller  

    public function index()  

    {  

        $articles = article::all();  

        return $articles;  

    }  

如果你直接返回查找到得数据,因为laravel可能是出于这样的考虑:一般这种情况下地返回,通常都是在创建api功能,比如你为你的一个手机app写的api一样,json数据无疑是很好的选择

这里我们首先需要修改的是<code>articlecontroller</code>中的<code>index()</code>方法:

Laravel MVC的基本流程Laravel5常用的包 github.com

&lt;?php  

namespace app\http\controllers;  

use illuminate\http\request;  

use illuminate\routing\controller; //不验证时使用 2选1  

//use app\http\controllers\controller; //use validatesrequests validate  

    /** 

     * 显示列表数据 

     * 

     * @param request $request 

     * @return response 

     */  

    public function index(request $request)  

        //$id = $request-&gt;input('id');  

        return view('articles.index', compact('articles'));  

     * update the specified article. 

     * @param  request $request 

     * @param  int $id 路由参数传入的输入数据,只需要将路由参数置于其他依赖之后 

    public function update(request $request, $id)  

我们只是修改了return这一行的代码,使用<code>view()</code>方法加载视图,这个视图就是位于<code>resources/views/articles/</code>中的<code>index.blade.php(</code><code>用的是blade模板引擎)</code>,最后使用<code>compact('articles')</code>将数据传给视图文件。

路由直接访问view

Laravel MVC的基本流程Laravel5常用的包 github.com

route::get('/', function () {  

    return view('welcome');  

当用户发送一个get请求访问我们站点的根目录的时候,直接访问这个试图文件位于<code>resources/views/welcome.blade.php</code>

laravel项目下面有4个文件夹:<code>app</code>、<code>bootstrap</code>、<code>public</code>、<code>vendor</code>,这4个文件夹下面又有很多个子文件夹,当你第一次看到这么丰富的文件夹内容时,是不是觉得很有压力?没关系,我们会逐一的来了解不同的文件夹。

<code>app</code> 包含了站点的controllers(控制器),models(模型),views(视图)和assets(资源)。这些是网站运行的主要代码,你会将你大部分的时间花在这个目录里。

<code>bootstrap</code> 用来存放系统启动时需要的文件,这些文件会被如index.php这样的文件调用。

<code>public</code> 这个文件夹是唯一外界可以看到的web服务器的目录。它含有laravel框架核心的引导文件index.php,这个目录也可用来存放任何可以公开的静态资源,如css,javascript,images等

<code>vender</code>包含composer命令相关管理文件,包含了许多php相关的app应用程序

laravel 获取最后一条sql的小函数,放在第三方函数库里面就行了

Laravel MVC的基本流程Laravel5常用的包 github.com

function lastsql()  

    $queries = db::getquerylog();  

    $a = end($queries);  

    $tmp = str_replace('?', '"' . '%s' . '"', $a["query"]);  

    return vsprintf($tmp, $a['bindings']);  

方法欺骗:让html表单实现restful

html表单没有支持 put 、patch 或 delete 请求。所以当定义 put 、patch 以及 delete 路由并在 html 表单中被调用的时候,您将需要添加隐藏 _method 字段在表单中。发送的 _method 字段对应的值会被当做http请求方法。举例来说:

Laravel MVC的基本流程Laravel5常用的包 github.com

&lt;form action="/foo/bar" method="post"&gt;  

    &lt;input type="hidden" name="_method" value="put"&gt;  

    &lt;input type="hidden" name="_token" value="&lt;?php echo csrf_token(); ?&gt;"&gt;  

&lt;/form&gt;  

Laravel MVC的基本流程Laravel5常用的包 github.com

运行php artisan key:generate;前提是你项目根目录下有个.env文件.然后把根路径下的.env.example的内容复制进去,再运行 php artisan key:generate

测试在项目根目录下简单运行 <code>phpunit</code> 命令即可

middleware是原来的路由filter的一个升级版,现在不用在filters.php里定义过滤器,取而代之的是在 middleware目录中创建类,并在kernel.php中配置全局还是可选,全局的middleware在每个请求都会执行,而可选的就相当于原来的filter,可以在路由中使用,也可以在控制器中使用。

Laravel MVC的基本流程Laravel5常用的包 github.com

illuminate/html  

nonfu/awesome-laravel //github laravel精选资源大全  

mccool/laravel-auto-presenter //mvp模式  

swiggles/laravel-memcache //memcache扩展  

xethron/migrations-generator //从现有数据库生成表迁移,包括索引和外键!  

nwidart/dbexporter //整个数据库生成迁移,包括数据