Laravel:将日期传递给视图(页面中的显示日期)

时间:2017-05-27 04:55:04

标签: php laravel date

我的第一个视图叫做receipt.blade,它应该包含一个日期。第二个名为userview.blade的视图有如下形式:(其工作是获取用户输入的电子邮件并显示收据)

Private Sub txtStudentName_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtStudentName.KeyPress

  If Not Char.IsLetter(e.KeyChar) And Not e.KeyChar = Chr(Keys.Delete) And Not e.KeyChar = Chr(Keys.Back) And Not e.KeyChar = Chr(Keys.Space) Then

      e.Handled = True

  End If

End Sub

路线将其重定向到控制器:

<form method="get" action="{{  route('test') }}">
        <label>Enter the email address:</label><input type="text" name="email">
        <button type="submit">Submit</button>
    </form

此功能允许用户获取收据(receipt.blade.php文件)。

我还有另一个视图(payment.blade),在所有操作开始之前,用户使用他们的名字和电子邮件地址注册自己,并将其添加到数据库中。

  

我的问题是如何在receipt.blade文件中显示日期(从payment.blade提交表单的时间)

我读到了确实获得日期的碳,但我不知道如何使用它以及价值应该通过的地方。我猜测应该有一个隐藏的输入日期:now()或者类似于payment.blade页面中的类似内容。所以我还需要在数据库中创建日期列。但是数据库中已经有一个created_at列(由laravel默认创建),其中包含日期和时间。

此外,我如何将日期更改为日/月/年(因为我在receipt.blade中以该格式需要它)。

非常感谢帮助。

修改

public function getUserReceipts(Request $data)
    {
        $email = $data->email;

        $donor = Donor::where('email', $email)->get();
        return view('emails.receipt')->with(compact('donor'));
    }

当我提交表格时,我正在创建捐赠者并发送邮件。然后它通过控制器重定向到页面,该控制器只是说“谢谢”并且不包含任何数据。但是,它还发送一封包含receipt.blade的电子邮件,而该电子邮件又包含刚刚提交给数据库的数据。因此,这是否意味着我需要做类似的事情来通过收据中的日期?所以看起来我可能还需要为日期创建一个列。或者可以不这样做?

编辑2 我的捐助者模型:

    public function thankyoupage(Request $data, Mailer $mailer){

    $hashed_id= hash('sha256', time());

    $donor = Donor::create([

    'first_name'=> $data->first_name,
    'last_name' => $data->last_name,
    'email' => $data->email,
    'video_count' => $video_count,
    'amount_donated' => $data->amount_donated,
    'hashed_id'=>$hashed_id,

    $mailer
        ->to($data->input('email'))
       ->send(new \App\Mail\MyMail(($data->input('first_name')),($data->input('last_name')),
        ($data->input('amount_donated')),($hashed_id)));
return redirect()->action('PagesController@thank1');

    }

我的邮件MyMail.php:

class Donor extends Model
{
    public $table ="donor";
    use Notifiable;

    protected $fillable = [
        'first_name', 'last_name', 'email','video_count', 'amount_donated', 'hashed_id'
    ];

    protected $hidden = [
        'id'
    ];


    public function updateDonor($first_name , $last_name , $email){
        $this->first_name = $first_name;
        $this->last_name = $last_name;
        $this->email = $email;

        $this->save();
    }

}

2 个答案:

答案 0 :(得分:1)

请看这个例子..

让我们假设你有一个控制器动作来保存提交表单时的用户:

// Save user action

$user = new \App\User();
$user->email = "myemail@email.com";
$user->save();
$userId = $user->id;

// redirect to next action
return redirect()->action(
    'Controller@confirm, ['id' => $userId]
);

以及显示日期确认的其他操作

// confirm action

$user = \App\User::find($id);
return view('confirm', compact('user');

在您的视图中使用此部分:

// view

{{ Carbon\Carbon::parse($user->created_at)->format('d.m.Y') }} 

答案 1 :(得分:1)

您的捐赠者对象应包含created_at字段。像这样在收据中使用它。

将此添加到您的视图

{{ $donor->created_at->format('d/m/Y') }}

DD/MM/YYYY格式打印日期。您可以根据需要更改格式,请查看文档以获取更多格式选项http://php.net/manual/en/function.date.php

编辑:您真的应该学习一些有关传递变量的基础知识。您的第二张收据有自己的数据集。因此,请进行以下更改。

$donor->created_at添加到thankyoupage方法

中的mailable参数中
send(new \App\Mail\MyMail(($data->input('first_name')),($data->input('last_name')),
            ($data->input('amount_donated')),($hashed_id), $donor->created_at));

在MyMail类中添加新数据变量。

public $first_name, $last_name, $amount_donated, $hashed_id, $date;

public function __construct($first_name,$last_name,$amount_donated,$hashed_id,$date)
{
    $this->first_name = $first_name;
    $this->last_name = $last_name;
    $this->amount_donated = $amount_donated;
    $this->hashed_id = $hashed_id;
    $this->date = $date;
}

singlereceipt刀片视图中,添加此内容。

{{ $date->format('d/m/Y') }}