laravel工作机制(PHP程序设计)

2021-05-29 14:02

阅读:450

标签:layout   创建   table   min   confirm   文件   artisan   migrate   表名   

 

laravel工作机制

1.用户User

作用:将请求匹配到某个特定路由

2.路由Route

1.作用:

路由映射到特定控制器,控制器处理请求,简化URL访问地址

2.分为GET路由和POST路由和任何HTTP请求路由

GET路由:

Route::get(‘/‘,function(){

return ‘Hello World‘

});

POST路由:

Route::post(‘foo/bar‘,function(){

return ‘Hello World‘

});

任何HTTP请求路由:

Route::any(‘foo‘,function(){

return ‘Hello World‘

});

输出结果均为Hello World

3.列出本站所有路由

运行命令eg:php artisan routes

4.routes.php

框架的路由文件,负责路由分配和映射。

3.控制器Controller

1.作用:

控制器操作数据,操作内容交给模型,负责协调调度

2.BaseController(基本控制器)

class BaseController extends Controller {
  protected function setupLayout()
  {
    if ( ! is_null($this->layout))
    {
        $this->layout = View::make($this->layout);
    }
  }
}

3.SurveyController(用到的主要方法)

public function survey($email=""){              //满意度调查问卷,输入email自动生成
  return View::make(‘index‘)->with(‘email‘,$email);
}
?
public function adminindex(){                   //后台首页
  return View::make(‘adminindex‘);
}
?
public function getIndex(){                   //访问的默认方法,问卷列表页
  $surveys=Survey::orderBy(‘created_at‘,‘desc‘)->paginate(5);//每页5条记录
  return View::make(‘survey.list‘)->with(‘surveys‘,$surveys);
}                                     //返回问卷列表中答卷列表,满意,不满意的问卷信息
public function submitsurvey(){              //满意度调查问卷提交
  // return json_encode(array(‘success‘=>true,‘msg‘=>"成功提交"));//把json串转换为数组
  $datas=Input::all();                     //输入问卷属性中所有数据
  $rules=array(
      ‘email‘=>‘required|email|unique:records‘
  );
  $validtor=Validator::make($datas,$rules);
  if($validtor->fails()){
      $msg=$validtor->messages()->first(‘email‘);
      return json_encode(array(‘success‘=>false,‘msg‘=>$msg));
  }
  $survey=new Survey();
  $survey->email=$datas[‘email‘];
  $survey->ip=$_SERVER[‘REMOTE_ADDR‘];
  $survey->q1=$datas[‘q1‘];
  if ($survey->q1==0){
      $survey->q21=$datas[‘q21‘];
      $survey->q22=$datas[‘q22‘];
      $survey->q23=$datas[‘q23‘];
      $survey->q24=$datas[‘q24‘];
      $survey->q25=$datas[‘q25‘];
  }
  $survey->save();                         //问卷保存
  return json_encode(array(‘success‘=>true,‘msg‘=>"成功提交,感谢您的参与"));
}

4.UserController(用到的主要方法)

class UserController extends BaseController
{
  public function __construct(){
      $this->beforeFilter(‘csrf‘,array(‘on‘=>‘post‘));
      $this->beforeFilter(‘auth‘,array(‘except‘=>array(‘login‘,‘dologin‘)));
  }
  public function login(){               // 用户登录
  return View::make(‘user.login‘);       //返回视图login登录
  }
?
  public function dologin(){             //判断登录信息是否与数据库信息一致(登录提交)
    $username=Input::get(‘username‘);   //获取手动输入的用户名进行传参$username
    $password=Input::get(‘password‘);
    if(Auth::attempt(array(‘username‘=>$username,‘password‘=>$password))){
        return Redirect::to(‘/adm‘);
  }                                     //将手动输入信息与数据库内容进行比对
  else{
      return Redirect::to(‘/login‘);     //失败重新返回login登录界面
      }
    }
   
    public function logout(){               //用户注销
    Auth::logout();
    return Redirect::to(‘/login‘);         //返回重定向login登录界面
    }
   
    public function getIndex(){             //默认的访问方法(用户列表页)
  $users=User::orderBy(‘created_at‘,‘desc‘)->paginate(5);
  return View::make(‘user.list‘)->with(‘users‘,$users);
  }
public function getAddUser(){                 //执行get方式用户添加
  return View::make(‘user.adduser‘);       //返回视图用户添加页面
}
?
public function postAddUser(){               //执行post方式用户添加,添加管理员提交生成后的页面
  $data=Input::all();                       //获取用户待验证的数据(表单验证$data参数)
  $rules=array(                             //该数据需要应用的验证规则(表单验证$rules参数)
      ‘username‘=>‘required‘,
      ‘email‘=>‘required|email|unique:users‘,
      ‘password‘=>‘required|min:6|confirmed‘
  );
  $validator=Validator::make($data,$rules); //表单验证(例如验证密码不能重复,密码不能少于6位)
?
  if ($validator->fails()){
      $errors= $validator->messages();    
      return Redirect::to(‘/adm/user/add-user‘)->with(‘errors‘,$errors);
  }
  $name=Input::get(‘username‘);         ////获取手动输入的用户名进行传参$name
  $email=Input::get(‘email‘);      
  $password=Input::get(‘password‘);
  $user=new User();                     //初始化
  $user->username=$name;               //传参的数据到数据库user表中的uersname属性中
  $user->email=$email;    
  $user->password=Hash::make($password);//哈希加密
  $user->save();                       //保存
  return Redirect::to(‘/adm/user‘);     //返回重定向user列表
?
}

4.模型Model

1.作用:

模型与数据库交互,负责业务数据处理

2.常用字段:

$table:指定模型使用的数据库表名

$timestamps:是否在表中自动维护update_at和created_at字段,默认为true,要定义成public

$fillable:允许集体赋值的字段

插入新纪录:

$user = new User();

$user ->name = "Tom";

$user->save(); //保存到数据库

查询记录:

$user = new User();

$users = User::find($id);

$users = User::where(‘name‘,‘john)->get();

修改记录:

$user = new User();

$users = User::find($id); //仅限于主键(一般设置id)

$user ->name = "Tom";

$user->save();

删除记录:

$users = User::find($id);

$user->delete();

5.数据库Database

1.作用:

存储数据

2.编辑迁移文件:

  1. php artisan migrate:make create_users_table所有的迁移都被存放在app/database/migrations文件夹下。

  2. 在migrations目录下创建CreateXxxTable类,继承migration类,up方法创建表,并配置表中的文件。

    class CreateUserTable extends Migration {
      public function up()
      {
        Schema::create(‘users‘, function(Blueprint $table)
        {
            $table->increments(‘id‘);
            $table->String(‘username‘,50);
            $table->String(‘email‘,60);
            $table->String(‘password‘,100);
            $table->String(‘remember_token‘)->default("");
            $table->timestamps();
        });
      }
      }
  3. 使用artisan命令migrate来执行迁移,创建数据库。

    eg:php artisan migrate

注:$table->timestamps() //该字段在插入和更新时都不会自动设置当前时间(与迁移文件相对比)

3.编辑数据填充:

  1. laravel 用seed类为数据库填充测试数据,所有的seed类都在app/database/seeds目录下

  2. 在seeds目录下创建XxxTableSeeds类,继承Seeds类,run方法编辑数据填充的语句,使用call方法来运行seed类。

    class DatabaseSeeder extends Seeder {
    ?
      public function run()
      {
        Eloquent::unguard();
        $this->call(‘UserTableSeeder‘);
      }
    }

    向数据库添加数据:

    class UserTableSeeder extends Seeder
    {
      public function run(){
          $user=new User();
          $user->username="111111";
          $user->email="admin@qq.com";
          $user->password=Hash::make("123456");
          $user->save();
      }
    ?
    }
  3. 使用artisan命令db:seed来填充数据库。

    eg:php artisan db:seed

 

6.视图Views

1.作用:

控制器把数据交给视图美化,负责显示数据和收集数据

2.Laravel提供Blade模块引擎,所有这些模板都必须以.blade.php结尾。

@extends(‘layout.app‘) //home页面继承layout模板,继承要用到关键字@extends

//layout.app 表示layout文件夹下的app.blade.php

@section(‘content‘) //@section则是用来定义content位置的内容

@yield用于声明一个位置,用于插入内容。第一个参数是ID,第二个参数是默认内容,当该content位置为插入内容,则显示默认内容。(一般是在layout.balde.php文件里)

3.$user->userlist

为一个用户列表

 

laravel工作机制(PHP程序设计)

标签:layout   创建   table   min   confirm   文件   artisan   migrate   表名   

原文地址:https://www.cnblogs.com/Hiramunderneath/p/14723872.html


评论


亲,登录后才可以留言!