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


    1.用户User

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

    2.路由Route

    作用:

    路由映射到特定控制器,控制器处理请求,简化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(基本控制器)

    在Laravel中,处理数据,应该用到控制器,用控制器统一处理后台逻辑,比如登录注销,表单验证等等。 Laravel的控制器代码统一放在app/Http/Controllers( or app/controllers)文件夹下,所有控制器都必须继承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

    为一个用户列表

    4.view方法中有三个参数:

    1.是必填参数,是包含视图名称的URI。 2.是必填参数,是需要渲染的视图名称。 3.是可选参数,可以传入一个数组,数组中数据会被传递给视图。 必填参数:需要在路由中捕获一些URL片段,例,从URL中捕获用户的ID,可以通过定义路由参数来执行此操作。也可以根据需要在路由中定义多个参数。 路由的参数通常放在{}内,并且参数名只能是字母,路由参数会按顺序依次被注入到路由回掉或者控制器中,而不受回调或者控制器的参数名称的影响。

     

     

  • 相关阅读:
    graphics.drawRect()坐标解释
    点击上、下一页显示图片
    [笔记] systemverilog学习笔录
    [转帖]Verilog的语法及generate使用
    [笔记]ALTLVDS_TX和ALTLVDS_RX及Modelsim使用技巧
    [转帖]Quartus II中FPGA的管脚分配保存方法
    [笔记]8组LVDS_TX和LVDS_RX的调试心得
    [笔记]Altera中FIFO
    [笔记] 输入信号的边沿检测
    [笔记]systemverilog书本推荐
  • 原文地址:https://www.cnblogs.com/Hiramunderneath/p/14723872.html
Copyright © 2020-2023  润新知