2016-10-27 16 views
7

ở đâu để làm cho các tập tin nếu tôi muốn sử dụng đặc điểm này trên mô hình của tôiLàm thế nào để thực hiện một Trait trong Laravel

Làm thế nào nên tập nhìn này như thế nào nếu tôi muốn có đặc điểm này bên trong:

trait FormatDates 
{ 
    protected $newDateFormat = 'd.m.Y H:i'; 


    // save the date in UTC format in DB table 
    public function setCreatedAtAttribute($date){ 

     $this->attributes['created_at'] = Carbon::parse($date); 

    } 

    // convert the UTC format to my format 
    public function getCreatedAtAttribute($date){ 

     return Carbon::parse($date)->format($this->newDateFormat); 

    } 

    // save the date in UTC format in DB table 
    public function setUpdatedAtAttribute($date){ 

     $this->attributes['updated_at'] = Carbon::parse($date); 

    } 

    // convert the UTC format to my format 
    public function getUpdatedAtAttribute($date){ 

     return Carbon::parse($date)->format($this->newDateFormat); 

    } 

    // save the date in UTC format in DB table 
    public function setDeletedAtAttribute($date){ 

     $this->attributes['deleted_at'] = Carbon::parse($date); 

    } 

    // convert the UTC format to my format 
    public function getDeletedAtAttribute($date){ 

     return Carbon::parse($date)->format($this->newDateFormat); 

    } 
} 

Và làm thế nào để áp dụng nó cho ví dụ về một lớp người dùng mẫu ...

Trả lời

23

Vâng, laravel sau PSR-4 vì vậy bạn nên đặt những đặc điểm của bạn trong:

app/Traits

Sau đó bạn cần phải chắc chắn rằng bạn không gian tên đặc điểm của bạn với con đường đó, vì vậy nơi:

namespace App\Traits; 

Ở phía trên của trait

Sau đó, chắc chắn rằng khi bạn lưu các tập tin, các tập tin của bạn tên khớp với tên đặc điểm. Vì vậy, nếu đặc điểm của bạn được gọi FormatDates bạn cần phải lưu file như FormatDates.php

Then 'sử dụng' nó trong mô hình tài khoản của bạn bằng cách thêm:

use App\Traits\FormatDates; 

ở phía trên cùng của mô hình của bạn, nhưng dưới namespace của bạn

và sau đó thêm:

use FormatDates; 

chỉ bên trong lớp, vì vậy đối với mô hình tài khoản của bạn, giả sử bạn đang sử dụng laravel mặc định, bạn sẽ nhận được:

use App\Traits\FormatDates; 

class User extends Authenticatable 
{ 
    use Notifiable, FormatDates; 

... 
} 

Và hãy nhớ để đổ autoloader:

composer dump-autoload

+0

Tôi đã tạo ra các tập tin MyTraits.php và đó là trong thư mục App \ đặc điểm và trong Class tài khoản mẫu của tôi tôi có App \ Traits không gian tên; sử dụng App \ Traits \ FormatDates; sử dụng Notifiable, SoftDeletes, FormatDates; Và nó không hoạt động ... Trait không thể được tìm thấy ..... nếu bạn có thể giúp tôi xin vui lòng trên TeamViewer ??? – lewis4u

+1

Đảm bảo bạn lưu tệp dưới dạng 'FormatDates.php' để khớp với tên lớp của bạn. –

+0

Điều đó đã sửa nó .... bây giờ tôi gặp lỗi khác Lớp '\ App \ Người dùng' không tìm thấy .. ??? – lewis4u

Các vấn đề liên quan