laravel视图 compact 循环遍历,if判断


一,视图:


1,视图文件在哪里?

  • 在laravel项目的resource/view/目录下。
  • 视图有必要进行分目录管理
  • 视图的后缀一般为“.blade.php”
  • 视图无法通过artisan方式创建

2,视图文件的命名与渲染:

  • 文件名习惯小写
  • 文件名的后缀为.blade.php 也可以.php后缀
  • 因为laravel框架中 有一套模板引擎使用的就是blade,当文件后缀为.blade.php时,可以直接只用标签语法,{{$title}},也可以使用原生的php语法来显示数据
  • 当视图文件后缀为.php时,就只能使用php原生的语法来显示数据。
  • 两个视图文件同时存在,则.blade.php后缀的优先显示

3,案例:
编写一个路由地址,调用TestController的viewtest方法,展示视图文件(创建两个,一个以.blade.php后缀,一个以.php结尾),用来验证优先级。

实现步骤,
(1.)首先在laravel文件目录下创建两个test文件,一个以.blade.php结尾,一个以.php结尾
在这里插入图片描述
test.blade.php

<body>
        <center>
            <h1>我是test.balde.php</h1>
        </center>
    </body>

test.php

<body>
        <center>
            <h1>我是test.php</h1>
        </center>
    </body>

(2.)在控制器文件TestController写个方法

// 视图方法,判断.blade.php和.php文件后缀的优先级
// viewtest方法名
 public function viewtest(){
     // test是创建的test文件(视图两个 名都为test,只是后缀不一样)
      return view('test');
}

(3,)在laravel项目中的route/web.php声明路由


// 视图,调用在TestController里的viewtest方法
Route::get('viewtest','TestController@viewtest');

(4),在浏览器访问在路由中定义过的viewtest
此时出现的是test.blade.php就说明 .blade.php后缀优先级高于.php后缀
在这里插入图片描述

视图也可以分目录管理;


二,变量的分配(assign)与展示


语法:

  1. view(模板文件名称,数组);,数组就是需要分配的变量集合,数组是一个键值数组,其键与变量名尽量保持一致。
  2. view(模板文件名称)->with(数组)
  3. view(模板文件名称)->with(名称,值)->with(名称,值)、

使用view()方式渲染一个视图以后,在**.blade.php**的视图文件中,模板中输出变量使用“{{$变量名}}”
(变量名就是分配过来的数组的键)


案例:将控制器方法中的时间(年月日时分秒)数据传递到视图中去,并且输出


在自定义的TestController.php文件里写一个方法

// 案例:将控制器方法中的时间(年月日时分秒)数据传递到视图中去,并且输出
    public function viewtest(){
        $date=date('Y-m-d H:i:s');//表达年月日 时分秒
         return view('test',['date'=>$date]);//第一个模板文件名称,也就是resources/views/test,,,test是自己建立的
            // 将获取到的值输出,,在resources/views/test.blade.php文件里
}

在路由文件里定义路由

Route::get('viewtest','TestController@viewtest');

在resources/views/test.blade.php

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">

        <!-- Styles -->
        <style>

        </style>
    </head>
    <body>
        <center>
            <h1>我是test.blade.php</h1>
            <!-- 输出值的方式。。 -->
            <h2>{{$date}}</h2>
        </center>
    </body>
</html>


三,compact函数使用(传参)


compact函数,是php的内置函数,和laravel框架没有关系,主要作用就是用于打包数组,
语法:
compact (‘变量名1’,‘变量名2’…);
在testcontroller控制器里写,,用compact写和 dump([‘day’=>$day]);这种写法,输出的结果一样。


        $day=date('N');
        dump(['day'=>$day]);
        dump(compact('day'));
        die;

在这里插入图片描述
或者这么写

 public function viewtest(){
        $date=date('Y-m-d H:i:s');//表达年月日 时分秒
         return view('test',compact('date'));
}

四,循环与分支语法标签【重点】


在视图中遍历数据与原始PHP循环相比:

  1. 有大括号,则需要去除大括号(不管多少个),然后在当前行最前边写上@
  2. 在结束循环的@的后面加上结束标签“endXXXXXX”

在php中写法和laravel视图中的写法的不同:

//php的写法
foreach($variable as $key=>$value){
//循环体
}


//在laravel视图中的写法
@foreach($variable as $key=>$value)
//循环体
@endforeach


五,案例:使用循环标签的语法,在视图中输出数据库表数据


在TestController.php里面定义一个方法:

// 案例:使用循环标签的语法,在视图中输出数据,在route/web.php定义路由
public function test4(){
    // 获取所有数据
$data=DB::table('member')->get();//或者$data=Member::all()
return view('test4',compact('data'));
}
}

在route/web.php文件里定义一下刚才定义方法的路由

Route::get('test4','TestController@test4');

在resources/views/建立一个test4.blade.php的文件

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">

        <!-- Styles -->
        <style>

        </style>
    </head>
    <body>
        <center>
        //遍历输出自己的数据库里的值
            @foreach($data as $key=>$value)
                {{$value->id}}-{{$value->name}}-{{$value->age}}-{{$value->email}}
                <br/>
            @endforeach
        </center>
    </body>
</html>

在这里插入图片描述
在这里插入图片描述


六,if判断


laravel if语句写法:
@if(条件判断式1)
执行的语句1
@elseif(条件判断式2)
执行的语句2
@elseif(条件判断3)
执行语句3

@else
默认执行的语句
@endif


七,案例:动态输出今天是星期几,将数字传递给视图,显示今天是星期几,如果传递的数字是7,则输出星期天,将数字转化成数字


在TestController.php里写上,

public function test5(){
    // 动态输出今天是星期几,将数字传递给视图,显示今天是星期几,如果传递的数字是7,则输出星期天,将数字转化成数字
    //输出星期几的数字
    $week=date('N');
    //输出传递的是星期几,例如Monday
    // $week=date('l');
    return view('test5',compact('week'));

}

routes/web.php

Route::get('test5','TestController@test5');

在resources/views/建立一个test5.blade.php的文件

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">

        <!-- Styles -->
        <style>

        </style>
    </head>
    <body>
        <center>
       传递过来的数据是:{{$week}}
       <br />
       @if($week==1)
       今天是:星期一
       @elseif($week==2)
       今天是:星期二
       @elseif($week==3)
       今天是:星期三
       @elseif($week==4)
       今天是:星期四
       @elseif($week==5)
       今天是:星期五
       @elseif($week==6)
       今天是:星期六
       @elseif($week==7)
       今天是:星期天
       @endif
        </center>
    </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值