Laravel入门:MVC框架

本文基于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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值