Laravel 框架 基础(一)
Laravel 框架
laravel 5.2 在 5.1 基础上继续改进和优化,添加了许多新的功能特性:多认证驱动支持、隐式模型绑定、简化 Eloquent 全局作用域、可选择的认证脚手架、中间件组、访问频率限制、数组输入验证优化等等。
一、 Compose安装laravel
compose下载:http://www.phpcomposer.com/
环境要求:安装之前先确定您的环境是否是php5.4以上,最好是php7,推荐使用xampp。并且php要打开openssl。
安装laravel
改镜象,避免翻墙:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
新建项目
composer create-project laravel/laravel gwd --prefer-dist
二、目录介绍
这里不再详述了,请见官方文档。
三、路由起步(参数,连接符,默认值)
所有应用路由都定义在 App\Providers\RouteServiceProvider 类载入的 app/Http/routes.php 文件中。
最基本的 Laravel 路由接收一个 URI 和一个闭包:
Route::get('/', function () {
return 'Hello World';
});
代表 http://localhost/ 返回 Hello World,下面这个是post方法。
Route::post('add', function () {
//
});
也可以用以下方法:
Route::match(['get', 'post'], '/', function () {
//
});
Route::any('foo', function () {
//
});
结合控制器:
Route::get('/', "IndexController@lst");
分组:
Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web','admin.login']], function () {
//Route::get('login','IndexController@login');
Route::get('index','IndexController@index');
Route::resource('article', 'ArticleController');
});
参数:
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
return $commentId;
});
默认值:
Route::get('posts/{post}/comments/{comment?}', function ($postId=0, $commentId=null) {
return $postId .'----'.$commentId;
});
资源路由:
Route::resource('article', 'ArticleController'); //生成n个方法
四、控制器
位于App\Http\Controllers
手动创建
<?php
namespace App\Http\Controllers;
class IndexController extends Controller{
public function index(){
return "welcome";
}
}
artisan 创建控制器:
php artisan make:controller UserController
控制器分组:有时候要把控制器进行分组,只需要在App\Http\Controllers下新文件夹,然后把控制器放进去。(需要改命名空间和use路径)
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;
class UserController extends Controller
{
public function index(){
return "你好";
}
//
}
五、视图
视图用的都是blade模板,位于view下面,有个示例文件welcome.blade.php。生产环境中只需要把模板拷到此处,重命名成blade.php。
控制器渲染模板
public function index()
{
return view('index');
}
如果模板上层还有文件夹,比如模板位于view/web/a.index.blade.php,view('web.index');
用“.”来连接。
public function index()
{
return view('web.index');
}
模板中只需要输出变量:<?php echo $data;?>
传参(单个):
public function index()
{
$data="你好";
return view('web.index')->with('data',$data);
}
传参(多个):只需要放数组是,然后作为第二个参数传给视图
public function index()
{
$data1="你好1";
$data2="你好2";
$data3="你好3";
$data=[
'data1'=>$data1,
'data2'=>$data2,
'data3'=>$data3
];
return view('web.index', $data);
}
compact传值:
public function index()
{
$data1="你好1";
$data2="你好2";
$data3="你好3";
$data=[
'data1'=>$data1,
'data2'=>$data2,
'data3'=>$data3
];
return view('web.index', compact('data','data1'));
}
模板中调用:<?php echo $data['data1'];?>
模板简单语法:
1、 单个变量{{$name}}
2、原样输出:
@{{$name}}
3、判断变量是否为空并作处理
{{$name or '姓名为空'}}
4、判断变量是否存在并作逻辑处理
{{isset($data1)?$data1:"不存在"}}
5、 转义 显示未转义的数据。在默认情况下,Blade 模板中的 {{ }} 表达式将会自动调用 PHP 的 htmlentities 函数,以避免 XSS 攻击。如果你不希望你的数据被转义,可以使用下列的语法:
{!!$str!!}
流程控制
@if($name>10)
大人
@else
小孩
@endif
除非--否则
@unless($name>10)
小孩
@endunless
for循环
@for($i=0;$i<10;$i++)
{{$i}}
@endfor
foreach
@foreach($data as $v)
{{$v}}
@empty
为空
@endforeach
while
@whiile(true)
你是真的
@endwhile
子模板
包含
@include(index)
@include('common.header',['page'=>'首页'])
被包含的
<div class="header">我是公共头部 - 您当前访问的页面是:{{$page}}</div>
嵌套
母版
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.header{height:100px;background: darkred}
.middle{height: 300px; background: lightblue}
.footer{height:100px;background: yellowgreen}
</style>
</head>
<body>
<div class="header">我是公共头部</div>
{{--@yield('content')--}}
@section('content')
<P>我是主模板里的内容</P>
@show
<div class="footer">我是公共底部</div></body>
</html>
子版
@extends('layouts.home')
@section('content')
@parent
<div class="middle">我是layouts区域的替换内容 XXXXXXXX</div>
@endsection
Laravel 框架 基础(一)的更多相关文章
- laravel框架基础知识总结
一.laravel简介 laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全:以下是本人在学习过程中记录的laravel比较基础的资料,权当学习笔记,请大神们多多指教 ...
- laravel框架基础(1)---入门与介绍
1.安装laravel5.7 (composer )2018-12-28 11:59:02 [作者:struggler] Php的版本要求:php>=7.1.3 打开php OpenSSL扩展 ...
- laravel框架基础(2)---laravel项目加载机制
当我们,通过浏览器请求laravel的时候 laravel就会根据我们的请求链接来选择对应的方法执行并返回我们所需要的实际结果. 那么这个过程是怎样的呢? 1.生命周期 2018-12-28 17:0 ...
- laravel框架基础知识点
一.数据库:DB 1.db查 DB::table('msg')->where('id','>',$id)->get() 查询单行 DB::table(' ...
- php的laravel框架快速集成微信登录
最终的解决方案是:https://github.com/liuyunzhuge/php_weixin_provider,详细的介绍请往下阅读. 本文面向的是php语言laravel框架的用户,介绍的是 ...
- laravel框架总结(十) -- 返回值
以前用CI框架对于返回值没有过多关注,但是发现使用laravel框架的时候出现了一些小问题,特意实践总结了一些常用情形,希望对大家有所帮助 先理解几个概念: 1>StdClass 对象=&g ...
- 使用 Laravel 框架:成为微信公众平台开发者
转: http://ninghao.net/blog/1441 作者:王皓发布于:2014-05-30 13:16更新于:2014-05-31 12:05 我们可以使用Laravel 框架为微信公众平 ...
- 6个项目带你全面掌握Laravel框架
Laravel框架简介: Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来,帮你构建一个完美的网络APP,而且每行 ...
- laravel框架详解
一.基础篇 1.概念 Laravel是一个有着美好前景的年轻框架,它的社区充满着活力,同时提供了完整而清晰的文档,而且为快速.安全地开发现代应用提供了必要的功能.2011年,Taylor Otwell ...
随机推荐
- ReactJs和React Native的那些事
介绍 1,React Js的目的 是为了使前端的V层更具组件化,能更好的复用,它能够使用简单的html标签创建更多的自定义组件标签,内部绑定事件,同时可以让你从操作dom中解脱出来,只需要操作数据就会 ...
- NSDate-日期类 OC——第七天(1)
1.总结前面学习的Oc中的几种数据类型 NSInteger NSUinteger CGFloat NSString NSMutableString NSSArray NSMutableArray NS ...
- [易飞]设置导入导出规则-小BUG
易飞系统在系统设置中-有设置导入导出规则,进行数据导入导出. 测试一:导入录入交易对象.从A账套导出到B账套,OK没有问题. 测试二:设置采购单单据性质. 导出结果: 怎么回事?把所有单据性质都导出了 ...
- C++对象模型(四):class成员初始化列表(Member Initialization List)
本文是Inside C++ Object Model Chapter 2 部分的读书笔记. 编译器如何处理初始化成员列表的. 下列情况中,必须要使用member initialization list ...
- 程序员的软实力武器-star法则
hhh 程序员的表达能力一直被诟病,尤其面试讲述自己的项目的时候 下面的star原则能够帮助你: 所谓STAR原则,即Situation(情景).Task(任务).Action(行动)和Result( ...
- Flash Media Live Encoder 使用帮助
翻译了一下Flash Media Live Encoder的帮助内容. Flash Media Live Encoder包含两个工具: Flash Media Live Encoder GUI(图 ...
- [面试算法题]比较二叉树异同-leetcode学习之旅(5)
问题描述 Given two binary trees, write a function to check if they are equal or not. Two binary trees ar ...
- Android帧布局(Frame Layout)
Android帧布局(Frame Layout) FrameLayout是最简单的一个布局管理器.FrameLayout为每个加入其中的组件创建一个空白区域(一帧),这些组件根据layout_grav ...
- 《java入门第一季》之面向对象面试题(代码块一网打尽)
<pre name="code" class="java">/* 代码块:在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同, ...
- java 项目得到jar和classes路径
java 项目得到jar和classes路径 public static String getJarPath(Class clazz) { String path = clazz.getProtect ...