THẢO LUẬN

thg 7 28, 2019 2:28 CH

cảm ơn bạn về bài viết

+1

Bạn cho mình hỏi chút chỗ config/auth.php Hiện tại mình đang sài Jwt token config chỗ đó rồi giờ phải sửa lại như thế nào thì được ?

'api' => [ 'driver' => 'jwt', 'provider' => 'users', ],
0
thg 7 28, 2019 12:26 CH

Code ở đây là code back-end. Mình nghĩ vậy

0
thg 7 28, 2019 11:09 SA

Cảm ơn bạn đã bổ sung. Chắc cái này tùy dự án và tùy xem dev thấy dễ dùng cái nào hơn và giải quyết đc hết các yêu cầu mong muốn là ổn

+1
thg 7 28, 2019 10:43 SA

API Resource ra đời sau (từ Laravel 5.5) nên thừa hưởng một số tư tưởng của Fractal và nó cũng support trường hợp add meta đó

https://laravel.com/docs/5.8/eloquent-resources#adding-meta-data

(UserResource::collection(User::all()))
    ->additional([
        'meta' => [
            'message' => 'Success',
        ],
    ]);

Anw, ai đã quen với fractal có thể tiếp tục dùng, còn đối với project mới mình khuyên dùng API Resource vì theo mình đọc thì thấy nó dễ hiểu hơn Fractal 😄

+2
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 7 28, 2019 10:37 SA
0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 7 28, 2019 10:36 SA

@HuyDQ mình hiểu rồi cảm ơn bạn nhé.

+1
thg 7 28, 2019 10:20 SA

@HuyDQ Mình chọn edit thì nó chuyển qua trang sửa thông tin.hiện những chi tiết của tin để mình sửa á

0
thg 7 28, 2019 10:14 SA

@hanh123 khi bạn chọn edit thì nó chuyển sang trang nào vậy bạn hay nó chỉ là cái modal ??

0
thg 7 28, 2019 10:08 SA

@HuyDQ a.PNG b.PNG c.PNG Đây bận.Khi mình sửa tin ở trang 2 nhưng khi sửa xong mình muốn nó ở trang 2 nhưng nó quay về trang 1

0
thg 7 28, 2019 9:58 SA

khi sửa một tin một trang là như nào bạn có thể nói rõ hơn hoặc show code đoạn đó được không ?

0
thg 7 28, 2019 9:33 SA

cảm ơn bạn mình đã cập nhật lại câu trả lời rồi nhé 👍

+2
thg 7 28, 2019 9:10 SA

Khi muốn queue hoạt động thì phải chạy lệnh php artisan queue:work như khi em deploy lên hosting r thì đâu có chạy lệnh đó dc đâu nên có cách gì khắc phục ko anh ???

0

"Với Javascript, trình biến đổi code đã từng phổ biến nhất trong một khoảng thời gian đã từng là CoffeeScript (được phát hành vào khoảng năm 2010), trong khi babel và TypeScript là những ngôn ngữ được dùng thường xuyên trong thời gian gần đây"

Bạn ơi, cho mình hỏi là:

  • "CoffeeScript" sao lại là trình biến đổi code.?
  • "babel" sao lại là ngôn ngữ?

😐 Mình thấy hơi khó hiểu ở đoạn này. Cảm ơn bạn.

0
thg 7 28, 2019 8:58 SA

Dùng UserResource::collection() thay cho UserCollection cũng được mà nhỉ?

+1
thg 7 28, 2019 8:44 SA

vậy có cách nào lấy tất cả các mã loại sản phẩm mà k cần tạo "EditProductViewModel.cs" k ạ, e muốn viết vào luôn ProductController thì làm như nào, e search mãi chả thấy 😦(

0

đã đi được tới series 2, tks bác 😄

0
thg 7 28, 2019 5:40 SA
  • Thứ nhất đối với việc sử dụng API Resouces có sẵn của Laravel thì với mỗi model bạn sẽ phải định nghĩa 2 class. Theo bài viết trên của mình thì ví dụ bạn có model User thì bạn cần định nghĩa 2 class với API Resources lần lượt là:
use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    public function toArray($request)
    {
        return [
           'id' => $this->id
            'username' => $this->username,
            'email' => $this->email,
            'avatar' => $this->avatar,
        ];
    }
}

Class này sẽ có nhiệm vụ với mỗi bản ghi dữ liệu của model user thì nó sẽ biến đổi thành như trên - tương ứng với hàm transform() trong package trong bài viết của mình. Nếu bạn muốn biến kết quả trả về là một collection và đính kèm thêm data gì đó khác như message thông báo mặc định thì sẽ phải định nghĩa thêm một class mới là:

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class UserCollection extends ResourceCollection
{
    public function toArray($request)
    {
        return [
            'data' => $this->collection,
           'meta' => [
               'message' => 'Success'
           ],
        ];
    }
}

Thì với một danh sách các user truyền vào qua controller như :

return new UserCollection(User::all());

Còn với fractal bạn chỉ cần tạo thêm hàm là addMeta() như sau:

fractal($users, new UserTransformer)->addMeta(['message' => 'Success']);
  • Thứ hai là API Resources của Laravel theo mình đọc thì nó không hỗ trợ việc $defaultIncludes hay $availableIncludes cho các relation của model nghĩ là nếu model của bạn có relation thì bạn sẽ phải viết sẵn vào trong UserResource như này:
<?php
use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    public function toArray($request)
    {
        return [
           'id' => $this->id
            'username' => $this->username,
            'email' => $this->email,
            'avatar' => $this->avatar,
            'posts' => PostResource::collection($this->posts),
        ];
    }
}

Nhìn chung mình đã từng thửu dùng thằng này từ lúc nó mới ra nhưng thấy không được linh hoạt lắm nên không sử dụng luôn từ đó. Còn hiện tại thì không rõ nó có update gì không vì mình đọc trên docs vẫn thấy không có gì mới hẳn.

+2

Chuyên nghiệp quá 😍

+1
thg 7 28, 2019 2:50 SA

Laravel từ bản 5.5 đổ đi có thể tạo Resources. Cách hoạt động của nó em thấy cũng tương đồng so với cái Fractal - Transformers. A thấy thằng Fractal - Transformers có ưu điểm gì hơn so với thằng resources

+1
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí