Laravel:在 blade 文件中内联 PHP 的最佳实践
Laravel: Best practice for inline PHP in a blade file
所以我有以下 blade 文件:
confirmEmail.blade.php
@extends('layouts.master')
@section('title')
{{ trans('tc.signUpConfirmTitle')}}
@endsection
@section('body')
<div class="container">
<div class="row">
<div class="col-lg-4">
</div>
<div class="col-lg-4">
<?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!";
}
?>
<br><br><br><br><br><br>
</div>
<div class="col-lg-4">
</div>
</div>
</div>
@endsection
如您所见,我在 <?php ?>
标签之间有一些原始的 PHP。问题是 User::where(...)
失败("FatalErrorException" - Class 'User' 未找到)。
我想这是因为我需要做一些 Laravel 导入?但是这样做是轻量级的吗?
请问在我的情况下最佳做法是什么?我对 Laravel 还是很陌生,所以请多多包涵。像这样使用原始 PHP 是否会破坏整个目的?
到目前为止,我一直在使用 Blade 模板来生成简单的变量和参数。但是我现在想做一些更复杂的事情,我遇到了麻烦。
像这样使用原始 PHP 是否会破坏整个目的?
确切地 !制作 MVC 以便在您的情况下会有不同层的不同类型的作业 "Model,View and Controller",您将控制器的作业组合到一个视图中,从而减少了控制器的作用。
您的控制器中的以下代码将执行您想要执行的操作。假设您有一个名为 confirmation 的函数,它负责所有验证并相应地返回响应。
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);
}
您不应该向用户添加确认密钥 table 但是它是您的数据库 table 您可以在任何地方插入任何内容,但我的建议是您应该为此创建一个单独的 table。
所以我有以下 blade 文件:
confirmEmail.blade.php
@extends('layouts.master')
@section('title')
{{ trans('tc.signUpConfirmTitle')}}
@endsection
@section('body')
<div class="container">
<div class="row">
<div class="col-lg-4">
</div>
<div class="col-lg-4">
<?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!";
}
?>
<br><br><br><br><br><br>
</div>
<div class="col-lg-4">
</div>
</div>
</div>
@endsection
如您所见,我在 <?php ?>
标签之间有一些原始的 PHP。问题是 User::where(...)
失败("FatalErrorException" - Class 'User' 未找到)。
我想这是因为我需要做一些 Laravel 导入?但是这样做是轻量级的吗?
请问在我的情况下最佳做法是什么?我对 Laravel 还是很陌生,所以请多多包涵。像这样使用原始 PHP 是否会破坏整个目的?
到目前为止,我一直在使用 Blade 模板来生成简单的变量和参数。但是我现在想做一些更复杂的事情,我遇到了麻烦。
像这样使用原始 PHP 是否会破坏整个目的? 确切地 !制作 MVC 以便在您的情况下会有不同层的不同类型的作业 "Model,View and Controller",您将控制器的作业组合到一个视图中,从而减少了控制器的作用。
您的控制器中的以下代码将执行您想要执行的操作。假设您有一个名为 confirmation 的函数,它负责所有验证并相应地返回响应。
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);
}
您不应该向用户添加确认密钥 table 但是它是您的数据库 table 您可以在任何地方插入任何内容,但我的建议是您应该为此创建一个单独的 table。