2019独角兽企业重金招聘Python工程师标准>>>

本文基于Laravel 4.2编写。

  1. 路由Hello World 在app/routes.php里面添加下面代码,然后在浏览器里访问http://<laravel host prefix>/helloworld可以见到结果。
Route::get('/helloworld', function() {return '<html><body>hello world</body></html>';
});
  1. 视图(View) 理论上可以把所有代码都写在app/routes.php里面,但是这会令代码难以维护。于是,我们可以把具体的页面内容搬到视图里,让路由文件简短一些。

app/routes.php

Route::get('/helloworld', function() {return View::make('helloworld');
});app/views/helloworld.php<html><body>hello world</body>
</html>
  1. 控制器(Controller) 我们写的是动态网页,页面里有变量,变量通过Controller传入View。

app/routes.php(这次我们的路由要先指向Controller,然后再由Controller返回View内容)

Route::get('/helloworld', 'HelloworldController@say');

app/controllers/HelloworldController.php

<?php
class HelloworldController extends BaseController {public function say() {$action = 'hello';$name = 'kitty';return View::make('hello.world', compact('action', 'name')); // hello.world表示hello目录里的world.php文件; 我们传入两个变量$action和$name}
}

app/views/hello/world.php(这次我们放在一个子目录里,避免views目录文件太多)

<html><body>{{$action}} {{$name}}</body>
</html>

页面将显示“hello kitty”

  1. 模型(Model) 随着业务逻辑的复杂,Controller文件会变长不好维护,那么我们可以把和数据库查询相关的逻辑分到模型层里,甚至可以安排一个擅长数据库表设计和写SQL的人专门负责这一层。

app/routes.php

Route::get('/helloworld', 'HelloworldController@say');app/controllers/HelloworldController.php <?php
class HelloworldController extends BaseController {public function say() {$name = 'kitty';$contacts = Contact::getContacts();return View::make('hello.world', compact('name', 'contacts'));}
}

app/models/Contact.php

 <?php
// 假设有个表contacts(uid, name, phone)
class Contact extends Eloquent {public $timestamps = false;protected $primaryKey  = 'uid';static public function createContact($uid, $name, $phone) { // 这个方法只是演示Model可能有些什么内容,并没有实际调用。$item = new Contact;$item->uid = $uid;$item->name = $name;$item->phone = $phone;$item->save();return $item;}// 假设有两行内容:(1, ‘kitty’, ‘800888’), (2, 'dingdong', '900999')static public function getContacts {return DB::table('contacts')->get();}
}

app/views/hello/world.blade.php(由于需要使用循环等超越HTML语法的功能,我们需要使用blade模板语言,文件名里需要添加blade部分)

<html><body>
@foreach ($contacts as $contact){{ $contact->name }}’s number is {{ $contact->phone }},
@endforeach</body>
</html>

页面将显示“kitty's number is 800888, dingdong's number is 900999,”

模板语言更多语法可参考:https://laravel.com/docs/4.2/templates

至此,MVC(Model-View-Controller)的框架进化完成。

转载于:https://my.oschina.net/HeYuhui/blog/654698

Laravel入门:MVC框架相关推荐

  1. 维纳斯和阿多尼斯故事_认识阿多尼斯! 适用于Node.js的Laravel样式MVC框架

    维纳斯和阿多尼斯故事 Node.js is one of the emerging technologies to write real-time applications using one of ...

  2. 小白laravel入门

    小白laravel入门 学习框架所需解决问题 1.入口文件 2.如何调用页面 3.数据库如何配置 4.控制器如何调用数据库 5.如何调用模板 6.控制器如何调到另一个控制器 7.如何配置路由 华丽~~ ...

  3. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

    原文:ASP.NET Core 入门教程 2.使用ASP.NET Core MVC框架构建Web应用 一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 ...

  4. spring框架mvc框架_Spring的MVC测试框架入门–第1部分

    spring框架mvc框架 最新推出的主要Spring框架是Spring MVC测试框架,Spring Guys声称它是"一流的JUnit支持,可通过流畅的API测试客户端和服务器端Spri ...

  5. spring框架mvc框架_Spring MVC测试框架入门–第2部分

    spring框架mvc框架 这个迷你系列的第一个博客介绍了Spring MVC测试框架,并演示了其在单元测试Spring MVC Controller类中作为控制器而不是POJO进行单元测试的用途. ...

  6. 【Java学习路线之JavaWeb】Spring MVC框架入门教程

    文章目录 读者 阅读条件 MVC设计模式简介 JSP+JavaBean Servlet+JSP+JavaBean MVC优缺点 优点 缺点 Spring MVC是什么 Spring MVC优点 第一个 ...

  7. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比

    在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)--初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...

  8. nodejs MVC框架:Adonisjs框架入门-001概述

    Adonisjs是一个MVC结构的Nodejs后端框架,可以用来创建WEB应用.API服务,包含处理 HTTP adonisjs是一个后端mvc框架,基于nodejs,使用typescript语言编写 ...

  9. thinkph 上花院 生多行mysql_PHP_ThinkPHP3.1基础知识快速入门,在当今众多的MVC框架中,ThinkPH - phpStudy...

    ThinkPHP3.1基础知识快速入门 在当今众多的MVC框架中,ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架,其遵循Apache2开源协议发布,自从诞生以来一直秉承简 ...

  10. Asp.net Core基于MVC框架实现PostgreSQL操作

    简单介绍 Asp.net Core最大的价值在于跨平台.跨平台.跨平台.重要的事情说三遍.但是目前毕竟是在开发初期,虽然推出了1.0.0 正式版,但是其实好多功能还没有完善.比方说编译时的一些文件编码 ...

最新文章

  1. Linux 小知识翻译 - 「命令行的提示符」
  2. 开辟与退出一个新的栈帧常用的汇编语言指令
  3. 新生代中Eden:S1:S2为什么是8:1:1?
  4. 大剑无锋之DQL、DML、DDL、DCL,简单举个例子【面试推荐】
  5. JSP(Servlet)中从连接池获取连接
  6. 制作镜像包时遇到的模块加载错误的问题
  7. php自动采集入库,Phpcms v9自动采集入库自动发布组件
  8. PS亮度蒙版扩展插件:Lumenzia for Mac 支持ps2021
  9. bada 2D游戏编程之一——图形绘制
  10. 蚂蚁课堂视频笔记思维导图-3期 十、分布式解决方案
  11. 并查集(UnionFind)算法
  12. 工程师笔记 | 嵌入式工程师常用软件
  13. 如何简单抓取拼多多买家订单列表
  14. 二端口输入阻抗和输出阻抗
  15. 树莓派——TSL2561获取光强数值(C语言)
  16. 沅湘流不尽,屈子怨更深,日暮秋风起,潇潇枫树林。
  17. python替换文本
  18. XBee3与XBee S2C混合应用注意事项(石油A11领域)
  19. 实验6 8255并行接口实验【微机原理】【实验】
  20. 精讲CS231N斯坦福计算机视觉公开课笔记

热门文章

  1. QQ密码算法 用于命令行登录
  2. 对话奇安信代码安全丨十年砥砺前行 迎来软件供应链安全的风口
  3. 根文件系统移植之使用busybox
  4. 第一视角玩无人机,parrot推出配备VR眼镜的bebop2
  5. JavaScript总结摘要
  6. SYSTEM 表空间管理及备份恢复
  7. java----Servlet的生命周期
  8. linux man命令汉化 操作
  9. Bootstrap Glyphicons
  10. zabbix 获取不到自定义脚本的值解决