Laravel:刀片文件中内联PHP的最佳做法

 2020-11-25 

Laravel: Best practice for inline PHP in a blade file

所以我有以下刀片文件:

confirmEmail.blade.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@extends('layouts.master')

@section('title')
{{ trans('tc.signUpConfirmTitle')}}
@endsection





@section('body')



 
   
     
   

   

      <?php
      echo $_GET['emailToken'];
      $emailToken = isset($_GET['emailToken']) ? $_GET['emailToken'] :"";
      $email = isset($_GET['email']) ? $_GET['email'] :"";

      //database lookup:
      $user = User::where('email','=',$email)->first();   //this fails...

      if($user->emailToken == $emailToken){
        echo"OK!";
      }
      ?>




     

   

   
     
   

 


@endsection

如您所见,我在标记之间有一些原始PHP。 问题是User::where(...)失败(" FatalErrorException"-未找到类"用户")。

我猜这是因为我需要做一些Laravel导入吗? 但这是轻量级的吗?

我可以问一下这种情况下的最佳实践是什么吗? 我对Laravel还是很陌生,所以请多多包涵。 像这样使用原始PHP破坏了整个目的吗?

到目前为止,我一直在使用Blade模板散布简单的变量和参数。 但是我现在想做些复杂的事情,但遇到了麻烦。


像这样使用原始PHP破坏了整个目的吗?
没错! 制作MVC的目的是为了在您的情况下将不同类型的作业"模型,视图和控制器"的不同层组合在一起,从而将控制器的作业组合到视图中,从而减少了控制器的作用。

控制器中的以下代码将执行您想做的事情。 假设您有一个名为确认的函数,该函数负责所有验证并相应地返回响应。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public function confirmation(Request $request)
{
   $status = 'Failure';
   $emailToken = $request->emailToken;
   $email = $request->email;
   if(isset($email))
     {
       $user = User::where('email','=',$email)->first();
        //I do not know why this fails on your side check if you have that email in your database
       if($user->emailToken == $emailToken)
        {
          $status = 'Success';
        }
     }
          return view('confirmEmail')->with('message', $status);
}

您不应该在用户表中添加确认键,但是您可以在数据库表中的任何位置插入任何内容,但是我的建议是您应该为此创建一个单独的表。