1. 云栖社区>
  2. PHP教程>
  3. 正文

[PHP][Biuld Your First App ]搭建你的第一个应用:保存通知单篇

作者:用户 来源:互联网 时间:2017-12-01 18:52:52

app保存应用通知搭建一个firstBiuld单篇

[PHP][Biuld Your First App ]搭建你的第一个应用:保存通知单篇 - 摘要: 本文讲的是[PHP][Biuld Your First App ]搭建你的第一个应用:保存通知单篇,[PHP][Biuld Your First App ]搭建你的第一个应用:保存通知单篇 本文适用于对 PHP 和 laravel 框架有一定了解并已经看完laravel入门视频:Laravel 5 Fundamentals

[PHP][Biuld Your First App ]搭建你的第一个应用:保存通知单篇

本文适用于对 PHP 和 laravel 框架有一定了解并已经看完laravel入门视频:Laravel 5 Fundamentals 的初学者。本文内容主要讲解如何搭建一个有简单注册、登录、填写表单、生成文本、预览、发送邮件和展示的 web 应用。

视频作者的视频经常被非法上传的 youtube 上,想要向有关当局反映必需填写一个 DMCA 文件并附上源视频地址和非法上传的视频地址,还要表达一些诉求。为了方便起见,网站被设计成填写表单自动生成 DMCA 文件自动发送邮件。

如果还没看请先下载观看:

链接: http://pan.baidu.com/s/1sjXeLQH 提取密码:jjb5

1.使用命令 php artisan make:model Notice创建 eloquent model Notice 的同时会自动创建相应的数据库迁移数据表。

设置数据表:

<?php use ... class CreateNoticesTable extends Migration {    /**     *Run the migrations.     *     *@return void     *     */    public function up()    {        Schema::create('notices',function(Blueprint $table)        {            $table->incremnets('id');            $table->integer('user_id')->unsigned();            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');            $table->integer('provider_id')->unsigned();            $table->string('infringing_title');            $table->string('infringing_link');            $table->string('original_link');            $table->string('original_description')->nullable();            $table->text('template');            $table->smallInteger('content_removed')->default(0);            $table->timestamps();        });    }    public function down()    {        Schema::drop('notices');    }} 

运行命令 php artisan migrate创建数据表。

2.编写 controller 中 store() 方法有关代码,获取 session 中的数据。

<?phpnamespace App/Http/Controller; use ... class NoticesController extends Controller {   public function __construct()  {    $this->middleware('auth');//注册一个中间件对所有方法进行验证  }   public function index()  {    return Auth::user()->notices;  }   public function create()  {    // get list of providers    $provider = Provider::list('name','id');     // load a view to create a new notice    return view('notices.create',compact('providers'));  }   pubilcfunction confirm(PrepareNoticeRequest $request,Guard $auth)  {      $template = $this->compileDmcaTemplate($data = $request->all(),$auth);       session()->flash('dmca',$data);       return view('notices.comfirm',compact('template'));//返回一个新视图页,检查填写的表单数据  }   public function store()  {      $data = session()->get('dmca');       $notice = Notice::open($data)->useTemplate($request->input('template'));       Auth::user()->notices()->save($notice);       return redirect('notices');  }   public function compileDmcaTemplate($data,Guard $auth)  {      $data = $data + [          'name' => $auth->user()->name,          'email' => $auth->user()->email,      ];//为模版传入数据,拼接数据       return view()->file(app_path('Http/Templates/dmca.blade.php'),$data);  }} 

3.在 Notice 模型中定义 open() 方法,返回 Notice 对象。定义 useTemplate() 方法,定义 template 属性。

<?phpnamespace App; use Illuminate/Database/Eloquent/Model; class Notice extends Model{     //定义可填写的属性    protected $fillable = [        'infringing_title',        'infringing_link',        'original_link',        'original_description',        'template',        'content_removed',        'provider_id',    ];     public static function open(array $attributes)    {        return new static($attributes);//相当于 new Notice(array $attributes),static 关键字用法不再赘述    }    public function useTemplate($template)    {        $this->template = $template;        return $this;    }} 

4.在 user 模型中定义 关联关系。

public function notices(){    return $this->hasMany('App/Notice');} 

5.优化 controller 业务逻辑,新建 createNotice() 方法。

<?phpnamespace App/Http/Controller; use ... class NoticesController extends Controller {   public function __construct()  {    $this->middleware('auth');//注册一个中间件对所有方法进行验证  }   public function index()  {    return Auth::user()->notices;  }   public function create()  {    // get list of providers    $provider = Provider::list('name','id');     // load a view to create a new notice    return view('notices.create',compact('providers'));  }   pubilcfunction confirm(PrepareNoticeRequest $request,Guard $auth)  {      $template = $this->compileDmcaTemplate($data = $request->all(),$auth);       session()->flash('dmca',$data);       return view('notices.comfirm',compact('template'));//返回一个新视图页,检查填写的表单数据  }   public function store()  {      $this->creaeNotice($request);       return redirect('notices');  }   public function compileDmcaTemplate($data,Guard $auth)  {      $data = $data + [          'name' => $auth->user()->name,          'email' => $auth->user()->email,      ];//为模版传入数据,拼接数据       return view()->file(app_path('Http/Templates/dmca.blade.php'),$data);  }   private function createNotice(Request $request)  {      $data = session()->get('dmca');       $notice = Notice::open($data)->useTemplate($request->input('template'));       Auth::user()->notices()->save($notice);  }}  小结

本节编写了 store() 方法,存储表单信息。下节发送 email。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索app , 保存 , 应用 , 通知 , 搭建 , 一个 , first , , Biuld 单篇 ,以便于您获取更多的相关知识。